如何编译器转换为(foo)?

Jac*_*ack -1 c compiler-construction

如果我从声明中省略了运营商,这样的事情: while(foo)将编译器把它while(foo != NULL || *foo != '\0' || foo != 0)while(!foo)或者是这样的?

怎么做到了?

Oli*_*rth 7

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

因此这两个是等价的:

while (foo)
while (foo != 0)
Run Code Online (Sandbox Code Playgroud)