ステートメントから演算子を省略した場合、次のよう while(foo)
になります。コンパイラはそれを有効にしますか、while(foo != NULL || *foo != '\0' || foo != 0)
またはwhile(!foo)
このようなものですか?
それは本当にどのように行われますか?
ステートメントから演算子を省略した場合、次のよう while(foo)
になります。コンパイラはそれを有効にしますか、while(foo != NULL || *foo != '\0' || foo != 0)
またはwhile(!foo)
このようなものですか?
それは本当にどのように行われますか?
while (condition)
condition
非ゼロであることを確認するだけです。
したがって、これら 2 つは同等です。
while (foo)
while (foo != 0)
NULL、'\0'、および 0 は機能的には同じですが、異なる型に使用されるだけです。
したがってfoo
、たとえば int の場合はwhile (foo)
、while (foo!=0)
foo がポインターの場合while (foo)
、while (foo!=NULL)
ただし、コンパイラは foo が指す値をチェックしません。