これは簡単な質問だと思いますが、次のことに苦労しています。例では、次のステートメントがあります(言語はCです)。
int foobar
if (foobar)
{
// do something.
}
今、私がこれについて正しいなら、foobarがゼロでないとき、このステートメントは真です。そのため、if(foobar!= 0)とほぼ同じになるはずです。
しかし、foobarが負の数になるとどうなりますか?
負または正。 0でないものは、if
の真の値です
また、負の数を考慮してください:-1
Cの-1は内部的に次のように表されます:0xFFFFFFFF
、この場合、符号なし整数にキャストすると正の数になります。
しかし、C99標準コンパイラの登場後、<stdbool.h>
代わりに。推測作業を大幅に削減します。
同じ、
if (foobar)
foobarがゼロではないことを意味するので、正か負かは関係ありませんが、それでもゼロではありません
Foobarが負の数(それでもゼロとは異なる)の場合、ステートメントはtrueを返す必要がありますが、そのような方法で異なる「true」値を持つ変数をテストすることはベストプラクティスではないため、この種のテストは避ける必要があります。