|
10鱼币
- #include<stdio.h>
- int main(void)
- {
- int a=1, b=0 ;
- if ( a != 0 || b = 1)
- printf("%d\n",b);
- return 0;
- }
复制代码
编译时显示: [Error] lvalue required as left operand of assignment(中文翻译过来就是赋值运算符左边必须是可赋值的左值)
然后我尝试用括号把b=1括起来,就可以编译成功了。
想问一下有没有大佬是知道为什么
这个问题的确是优先级的问题。
a != 0 || b = 1 会先判断 a != 0,然后得到结果0,再进行0||b,得到0,最后在进行赋值,而赋值运算符的左侧必须是变量,你这里赋值运算符左侧是定值0。
你应该是打算用比较运算符吧。
- #include<stdio.h>
- int main(void)
- {
- int a=1, b=0 ;
- if ( a != 0 || b == 1)//比较运算符是两个等号,赋值运算符是一个等号
- printf("%d\n",b);
- return 0;
- }
复制代码
|
最佳答案
查看完整内容
这个问题的确是优先级的问题。
a != 0 || b = 1 会先判断 a != 0,然后得到结果0,再进行0||b,得到0,最后在进行赋值,而赋值运算符的左侧必须是变量,你这里赋值运算符左侧是定值0。
你应该是打算用比较运算符吧。
|