C语言 如何编译器翻译 while(foo)



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

怎么做呢?

while (condition)只是检查condition是否为非零。

因此,这两者是等效的:

while (foo)
while (foo != 0)

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

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

如果 foo 是一个指针,while (foo) 表示while (foo!=NULL)

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

最新更新