为什么'&&'运算符的使用与'='和'=='具有不同的含义

问题描述 投票:0回答:1

我正在查看麻省理工学院的作业,并在链接问题 2.5)选项 B)下面发现了这个陈述

https://ocw.mit.edu/courses/6-087-practical-programming-in-c-january-iap-2010/63515d4218cf01ba460623cbe9dc3b5c_MIT6_087IAP10_assn02_sol.pdf

现在它说

假设 (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,但上面他们提到它是错误,我理解这可能是依赖于编译器的事情之一,那么发生的事情不允许“=”工作与“&&”运算符?

c compare comparison
1个回答
1
投票

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

像这样的逻辑比较中的使用和赋值几乎肯定是运行时错误,但它不是编译错误。一切都按其应有的方式进行。

© www.soinside.com 2019 - 2024. All rights reserved.