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?
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?
В 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, потому что случайно отсутствует &
в &&
изменяет поведение скомпилированного кода.
Это было бы где-то в первых двух главах любой достойной книги С. –
Значение 'a && b' равно' 0' или '1' –
Этот код также имеет ошибки синтаксиса –