c - 以下语句在 C 语言中等效吗?

标签 c if-statement

如果 my_function() 返回 0 表示成功,或 -EINVAL 表示失败,那么这两个语句是否等效?

if( my_function() ){  

if( my_function() == 0){

我知道在 C 中 1 是 bool 值 True,0 是 bool 值 False,所以我不确定如果 my_function() 成功返回 0,第一个语句是否会使 if 语句失败。

最佳答案

在 C 语言中, bool 上下文表达式 a 通常等价于表达式 a != 0。这意味着您的第一个变体

if( my_function() ){  

相当于

if( my_function() != 0 ){  

这又意味着您的第二个变体不等于第一个变体。它实际上与第一个相反。您的第一个版本检查失败,而第二个版本检查成功。

关于c - 以下语句在 C 语言中等效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46596863/

相关文章:

c - 使用头文件修复 GCC 中的编译器错误

c - 使用 void 指针在节点中存储任何类型的数据(可以是 int char 或结构)

php - 尝试在 while 循环之后创建 if 语句,或者在结果为空时执行其他操作。这可能吗?

c++ - 为什么我的程序同时进入 if 语句和相应的 else 语句?

php - 如何在php中显示时区

c - 尝试实现任务调度程序 COM 处理程序

python - CCKeyDerivationPBKDF 线程安全吗?

c - 如何将字符串写入C中的文件?

if-statement - Java8将长接口(interface)方法拆分为单独的方法

java - 无法在 ArrayList<String> 中找到匹配的字符串