我正在查看麻省理工学院的作业,并在链接问题 2.5)选项 B)下面发现了这个陈述
现在它说
假设 (x=0,y=0,alliszero=1)。 alliszero =(x=1) && (y=0);
他们只是要求查找语句是否会给出错误。 在解决方案中他们说
'=' 运算符应替换为 '=='。正确的版本是 alliszero =(x==1) && (y==0);
考虑下面的程序
#include <stdio.h>
void main()
{
int x =0 , y = 0 , alliszero =1;
alliszero = (x = 1) && (y = 0);
printf("%d",alliszero);
}
现在,在我运行这个程序之后,我得到的输出为 0,但上面他们提到它是错误,我理解这可能是依赖于编译器的事情之一,那么发生的事情不允许“=”工作与“&&”运算符?
y = 0
总是会产生 0
< which is false, so using a logical and operation with it as an argument will always be false, which is printing as 0
。
像这样的逻辑比较中的使用和赋值几乎肯定是运行时错误,但它不是编译错误。一切都按其应有的方式进行。