如果我省略语句中的运算符,如下所示:
while(foo)
编译器会将其转入while(foo != NULL || *foo != '\0' || foo != 0)
或while(!foo)
或类似的内容吗?
如何真正做到?
while (condition)
仅检查 condition
是否非零。
因此这两者是等价的:
while (foo)
while (foo != 0)
NULL、' ' 和 0 在功能上是相同的,只是它们用于不同的类型。
因此,如果
foo
是一个 int,则 while (foo)
表示 while (foo!=0)
如果 foo 是指针,则
while (foo)
表示 while (foo!=NULL)
等等。不过,编译器从不检查 foo 指向的值。