如果 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/