2017-01-17 7 views
0
a=5; b=0; c=1; 
if(b=2) c = a++ & b; 
else a=4; 
b = a && b; 

Код на C. Как будет работать этот код? Что будет иметь значения a, b, c? Что делает b = a && b означает в C?Что означает b = a && b в C?

+2

Это было бы где-то в первых двух главах любой достойной книги С. –

+0

Значение 'a && b' равно' 0' или '1' –

+0

Этот код также имеет ошибки синтаксиса –

ответ

0

В C && является логическим оператором AND. Поэтому a && b является результатом логической операции «a AND b». Поскольку C изначально не имел логического типа, вы часто видите, что int «злоупотребляют» в качестве замены. Значение int является «истинным», если оно имеет ненулевое значение - и «false», если оно равно нулю. (Я думаю, что C99 добавил некоторый логический тип, называемый _Bool, но я не совсем уверен в этом.) Таким образом, результат выражения a && b равен либо 1, если оба a и b отличны от нуля или ноль, если (по крайней мере) один из них равен нулю. Это также то, что затем присваивается b в b = a && b;.

Однако существует также двоичный оператор & в C, который является bitwise AND и выполняет что-то отличное от &&. Это также может быть источником путаницы и непреднамеренных ошибок/ошибок в коде C, потому что случайно отсутствует & в && изменяет поведение скомпилированного кода.

+0

FYI, ключевое слово C99 - '_Bool', с необязательным typedef' bool'. См. Http://stackoverflow.com/questions/8724349/difference-between-bool-and-bool-types-in-c для получения более подробной информации – Zrax

+0

@ Zrax: Спасибо, я изменил его в своем ответе. – Striezel

Смежные вопросы