【发布时间】:2020-04-13 17:13:15
【问题描述】:
我想问一下C语言在以下方面的行为是什么:
int n = 0;
.
.
// n in this block may change value to something else but a (positive) number
.
.
if(n)
{
// do something
}
.
.
那么当n 是整数时,if(n) 是什么意思?
【问题讨论】:
-
if(n)等价于if (n != 0)。 -
“无条件”是什么意思?那里有一个明显的条件......
-
它在真假的基础上进行评估,因此如果 n 为 0,则为假,否则视为真
-
还应该提到的是,除非
n是布尔类型,否则这是不好的样式。考虑char* str_ptr与if(str_ptr)和if(*str_ptr)的情况,很容易滑到这里并造成错误。这样的代码不是自记录的,对于读者来说,if(str_ptr)的意图是与 NULL 指针进行比较,或者如果它是一个意外错误,程序员打算与 nul 终止进行比较,这对读者来说并不明显。相反,明确一点总是更好。将 if 语句视为需要布尔参数的函数。if(str_ptr != NULL)和if(*str_ptr != '\0').
标签: c if-statement conditional-statements