# Comparison operators

Comparison operators work with boolean and integer values.

* Equality: `==`, for booleans and integers

  Both sides of the equality operator may be optional, even of different levels, so it is for example possible to compare a non-optional with a double-optional (`??`).

  ```
    1 == 1  // is `true`

    1 == 2  // is `false`
  ```

  ```
    true == true  // is `true`

    true == false  // is `false`
  ```

  ```
    let x: Int? = 1
    x == nil  // is `false`
  ```

  ```
    let x: Int = 1
    x == nil  // is `false`
  ```

  ```
    // Comparisons of different levels of optionals are possible.
    let x: Int? = 2
    let y: Int?? = nil
    x == y  // is `false`
  ```

  ```
    // Comparisons of different levels of optionals are possible.
    let x: Int? = 2
    let y: Int?? = 2
    x == y  // is `true`
  ```
* Inequality: `!=`, for booleans and integers (possibly optional)

  Both sides of the inequality operator may be optional, even of different levels, so it is for example possible to compare a non-optional with a double-optional (`??`).

  ```
    1 != 1  // is `false`

    1 != 2  // is `true`
  ```

  ```
    true != true  // is `false`

    true != false  // is `true`
  ```

  ```
    let x: Int? = 1
    x != nil  // is `true`
  ```

  ```
    let x: Int = 1
    x != nil  // is `true`
  ```

  ```
    // Comparisons of different levels of optionals are possible.
    let x: Int? = 2
    let y: Int?? = nil
    x != y  // is `true`
  ```

  ```
    // Comparisons of different levels of optionals are possible.
    let x: Int? = 2
    let y: Int?? = 2
    x != y  // is `false`
  ```
* Less than: `<`, for integers

  ```
    1 < 1  // is `false`

    1 < 2  // is `true`

    2 < 1  // is `false`
  ```
* Less or equal than: `<=`, for integers

  ```
    1 <= 1  // is `true`

    1 <= 2  // is `true`

    2 <= 1  // is `false`
  ```
* Greater than: `>`, for integers

  ```
    1 > 1  // is `false`

    1 > 2  // is `false`

    2 > 1  // is `true`
  ```
* Greater or equal than: `>=`, for integers

  ```
    1 >= 1  // is `true`

    1 >= 2  // is `false`

    2 >= 1  // is `true`
  ```
