-1

如果我从语句中省略运算符,如下所示: while(foo)编译器会将其转入while(foo != NULL || *foo != '\0' || foo != 0)或类似的while(!foo)东西吗?

它是如何真正做到的?

4

2 回答 2

7

while (condition)只检查condition非零。

因此这两个是等价的:

while (foo)
while (foo != 0)
于 2012-06-18T17:24:24.140 回答
1

NULL、'\0' 和 0 在功能上是相同的,只是它们用于不同的类型。

因此foo,例如,如果是一个 int,while (foo)则意味着while (foo!=0)

如果 foo 是一个指针,while (foo)意味着while (foo!=NULL)

等等。不过,编译器从不检查 foo 指向的值。

于 2012-06-18T17:27:47.130 回答