如果我省略了语句中的运算符,那么while(foo)
编译器会将其转换为while(foo != NULL || *foo != '\0' || foo != 0)
或while(!foo)
或类似的东西吗?
怎么做到了?
答案 0 :(得分:7)
while (condition)
只检查condition
是否为非零。
因此这两者是等价的:
while (foo)
while (foo != 0)
答案 1 :(得分:1)
NULL,'\ 0'和0在功能上是相同的,只是它们用于不同的类型。
因此,如果foo
是int,while (foo)
表示while (foo!=0)
如果foo是指针,while (foo)
表示while (foo!=NULL)
等。但编译器永远不会检查foo指向的值。