Venkatesh Pyla Ответов: 2

Процесс = и == в операторе if.


в данных программах на языке Си какой процесс происходит при операторах присваивания и равенства?

Что я уже пробовал:

#включить <stdio.h>
пустота главная()
{
int x = 0;
если (x = 0)
printf("Its zero\n");
еще
printf("Its not zero\n");
}
Выход:это не ноль

#включить <stdio.h>
пустота главная()
{
int x = 0;
если (x == 0)
printf("Its zero\n");
еще
printf("Its not zero\n");
}
Выход:его ноль

2 Ответов

Рейтинг:
2
Рейтинг:
13

Thomas Daniels

x = 0 устанавливает значение параметра x к 0, поскольку x == 0 является "истинным", если x равно 0.

Давайте взглянем на ваш оператор if в первом блоке кода:

if (x = 0)
x = 0 устанавливает значение x равным нулю, но это выражение имеет новое значение x (таким образом, ноль) в качестве возвращаемого значения. Итак, это if утверждение эквивалентно if (0) (с дополнительным эффектом, что значение x устанавливается равным нулю). 0 сопоставляется с false (все остальные целые числа сопоставляются с true), поэтому блок else выполняется.

Во втором случае блок:
if (x == 0)
x == 0 это правда, поэтому блок if будет выполнен.


Venkatesh Pyla

Спасибо за ваш умный ответ.

Thomas Daniels

Всегда пожалуйста!

[no name]

Действительно умный ответ! Это потому, что она многое объясняет примерно в трех предложениях, и это очень ясно. Возьми мою маленькую пятерку за это.