これは簡単な質問だと思いますが、私は次のことに苦労しています。私の例では、次のステートメントがあります(言語はCです)。
int foobar
if (foobar)
{
// do something.
}
さて、これについて正しければ、foobar
がゼロでない場合、このステートメントは真です。したがって、。とほとんど同じである必要がありますif (foobar!=0)
。
foobar
しかし、負の数になるとどうなりますか?
これは簡単な質問だと思いますが、私は次のことに苦労しています。私の例では、次のステートメントがあります(言語は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」値を持つ可能性のある変数をテストすることはベスト プラクティスではないため、そのようなテストは避ける必要があります。