-1

ステートメントから演算子を省略した場合、次のよう while(foo)になります。コンパイラはそれを有効にしますか、while(foo != NULL || *foo != '\0' || foo != 0)またはwhile(!foo)このようなものですか?

それは本当にどのように行われますか?

4

2 に答える 2

7

while (condition)condition非ゼロであることを確認するだけです。

したがって、これら 2 つは同等です。

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 に答える