c - C语言中的if-else条件

标签 c if-statement

在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/

相关文章:

c++ - 在单个 header 中定义全局(外部)变量更好,还是在各自的头文件中定义更好?

C编程退出不工作

c++ - 用于获取 URL 之类的简单 C++(或 c)库

ruby - 在 Ruby 中编写此条件的更短方法 n != 1 && n != 2 && n != 3 && n !=4

c - Visual Studio Code 提示结构属性语法

javascript - 如何在加号和减号之间切换 Accordion ?

javascript - 根据 if 语句结果更改 if 语句参数中的变量值

MySQL 创建 IF 查询以显示 Col_A 所在的层

Ruby 一种根据条件执行函数的巧妙方法

c - 将 srand() 放在头文件中是个好主意吗?