为何C++中if(x=0)会被判定为布尔值false?
为什么
x=0在if条件里会被判定为false? 核心原因就两条:
- C++中赋值表达式的返回值就是被赋予的数值
- 整数在布尔语境下,0等价于
false,非0等价于true
看你的代码:
int x{}; if (x = 0) std::cout << "condition true"; else std::cout << "condition false";
当执行x = 0时,程序先把0赋值给x,然后这个表达式本身的结果就是0。if语句判断的是这个表达式的结果,0被隐式转换成布尔值false,所以会进入else分支,输出"condition false"。
要是把代码改成if (x = 1),表达式结果是1,转成true,就会执行if分支的内容了。
内容的提问来源于stack exchange,提问作者smalcakmak
相关产品推荐
相关产品推荐

