web-dev-qa-db-ja.com

if文の整数

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

int foobar

if (foobar)
{
// do something.
}

今、私がこれについて正しいなら、foobarがゼロでないとき、このステートメントは真です。そのため、if(foobar!= 0)とほぼ同じになるはずです。

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

27
Bart Teunissen

負または正。 0でないものは、ifの真の値です

また、負の数を考慮してください:-1

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

しかし、C99標準コンパイラの登場後、<stdbool.h>代わりに。推測作業を大幅に削減します。

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

47
Aniket Inge

同じ、

if (foobar) 

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

3
Anders

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

0
Lupuss