что означает знак ==? - PullRequest
       5

что означает знак ==?

8 голосов
/ 02 сентября 2010

Я пытаюсь понять, что означает знак == в этой программе?

int main()
{
    int x = 2, y = 6, z = 6;        
    x = y == z;
    printf("%d", x);
}

Ответы [ 8 ]

20 голосов
/ 02 сентября 2010

Оператор == проверяет равенство. Например:

if ( a == b )
    dosomething();

И, в вашем примере:

x = y == z;

x истинно (1), если y равно z. Если у не равно z, х ложно (0).

Типичная ошибка, которую допускают начинающие программисты на C (и опечатка, сделанная некоторыми очень опытными):

if ( a = b )
    dosomething();

В этом случае b присваивается a, а затем оценивается как логическое выражение. Иногда программист делает это сознательно, но это дурной тон. Другой программист, читающий код, не будет знать, было ли это сделано преднамеренно (редко) или случайно (гораздо более вероятно). Лучшая конструкция была бы:

if ( (a = b) == 0 )   // or !=
    dosomething();

Здесь b присваивается a, затем результат сравнивается с 0. Цель ясна. (Интересно, что я работал с программистами на C #, которые никогда не писали на чистом C и не могли сказать вам, что это делает.)

5 голосов
/ 02 сентября 2010

Это оператор "равно".

В вышеприведенном примере x присваивается результат выражения теста равенства (y == z).Таким образом, если y равно z, x будет установлено на 1 (true), в противном случае 0 (false).Поскольку C (до C99) не имеет логического типа, выражение оценивается как целое число.

4 голосов
/ 02 сентября 2010

Равенство. Возвращает 1, если операнды равны, иначе 0.

2 голосов
/ 02 сентября 2010

== означает "euual to". Этот оператор имеет более высокий приоритет, чем оператор = (равно). Итак, уравнение x = y == z; попытается присвоить результат y == z переменной x. который в данном случае равен 1.

1 голос
/ 02 сентября 2010
int main() 
{ 
    int x = 2, y = 6, z = 6;         
    x = y == z; 
    printf("%d", x); 
} 

Давайте начнем так:

 x = (6==6)

Он спрашивает, равно ли 6 эквивалентно 6 ?: true

x = true, но поскольку x является целым числом, x = 1 Новое значение х равно 1.

напечатано следующее:

1

0 голосов
/ 02 сентября 2010

Подумайте об этом так:

= означает, что-то присвоить значение.

== означает, что оно равно значению.

Например

int val = 5; //val is 5
//= actually changes val to 3
val = 3; 

//== Tests if val is 3 or not. 
//note: it DOES NOT CHANGE the value of val.
val == 3; 

int new_val = val == 3; //new_val will be 1, because the test is true

//the above statement is the same as
bool is_val_3 = false;
if( val == 3 )
   is_val_3 = true;
int new_val;
new_val = is_val_3;

//putting it together, 
val = new_val == 2; //sets val to 0. do you understand why now?
0 голосов
/ 02 сентября 2010

== оператор, используемый для равенства .. в нашем примере, если y равен z, тогда x будет иметь истинное значение, иначе x будет иметь ложное значение

0 голосов
/ 02 сентября 2010

Это говорит

X будет равно true / 1 или false / 0.

Другой способ взглянуть на эту строку таков:

x =  ( is y equal to true? then true/1 or false/0 )
...