编译器如何翻译while(foo)?

问题描述 投票:0回答:2

如果我省略语句中的运算符,如下所示:

while(foo)
编译器会将其转入
while(foo != NULL || *foo != '\0' || foo != 0)
while(!foo)
或类似的内容吗?

如何真正做到?

c
2个回答
7
投票

while (condition)
仅检查
condition
是否非零。

因此这两者是等价的:

while (foo)
while (foo != 0)

1
投票

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

因此,如果

foo
是一个 int,则
while (foo)
表示
while (foo!=0)

如果 foo 是指针,则

while (foo)
表示
while (foo!=NULL)

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

© www.soinside.com 2019 - 2024. All rights reserved.