35

これは簡単な質問だと思いますが、私は次のことに苦労しています。私の例では、次のステートメントがあります(言語はCです)。

int foobar

if (foobar)
{
// do something.
}

さて、これについて正しければ、foobarがゼロでない場合、このステートメントは真です。したがって、。とほとんど同じである必要がありますif (foobar!=0)

foobarしかし、負の数になるとどうなりますか?

4

3 に答える 3

62

ネガティブまたはポジティブ。0 以外は真の値です。if

また、負の数を考えてみましょう: -1

C の -1 は内部的に次のように表されます: 0xFFFFFFFF、この場合、符号なし整数にキャストすると正の数になります。

しかし、C99 標準コンパイラの出現後は、 <stdbool.h>代わりに使用することをお勧めします。推測の作業を大幅に軽減します。

stdpool.h についてはこちらをご覧ください

于 2013-02-01T12:52:27.980 に答える
6

同じ、

if (foobar) 

foob​​ar がゼロでないことを意味するので、正か負かは関係ありません。それでもゼロではありません

于 2013-02-01T12:53:21.657 に答える
0

foob​​ar が負の数の場合 (それでもゼロとは異なります)、ステートメントは true を返す必要がありますが、そのような方法で異なる「true」値を持つ可能性のある変数をテストすることはベスト プラクティスではないため、そのようなテストは避ける必要があります。

于 2013-02-01T12:58:30.980 に答える