在C语言中,如果把x=0
放在if-else
条件下,结果是什么?如果是false
或者如果这个赋值完成,那么就表示true
?
我的同事写代码为:
if(condition = 0)
{
//do process A
}
else
{
// do process B
}
显然,这段代码是错误的,我知道它应该是 condition == 0
或 ((condition=foo()) == 0)
但我的假设是程序应该始终执行进程 A,因为我认为 if(condition = 0)
应该始终返回 true,因为这是将值 0
设置为变量 condition
并且这套流程应该是真的。但是,程序总是执行进程 B,这意味着 if
使用变量 condition
值,我的假设是错误的。
然后我又做了一个测试代码:
if(condition = 2) //or other none-zero value
{
//do process A
}
else
{
// do process B
}
这一次,程序总是执行进程A。
我的问题是为什么if-else
条件不使用condition的运算值而是使用设置后的left变量?
最佳答案
当您将 0 分配给变量 condition 时,它变为 false,因为 0 表示 false,任何非零值都表示 true。因此,当您分配 0 时,else 条件被执行,而当您分配 2 条件时,它表示一个 true 语句,它执行...
if(condition = 0)
将值 0 分配给条件后,它变为
if(condition)
因为它是 false,所以它不执行。但是,当条件 = 2 时,它以相同的方式工作并变为 true。因此,if 条件将被执行。
关于c - C语言中的if-else条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26395548/