-2
#include <stdio.h>
int main () {
    double num = 5.2;
    int var = 5;
    printf("%d\t", sizeof(!num));
    printf("%d\t", sizeof(var = 15/2));
    printf("%d", var);
    return 0;
}

このプログラムをVS2010およびGCC4.7.0で実行すると、出力は次のように1 4 5なり、Turbo 3.0/4.5を使用2 4 5すると結果が得られます。

データ型の正確なサイズはどこから取得できますか?

私は次のリンクを読みました:link1link2link3link4link5 しかし、彼らは私の質問に答えることができませんでした!

4

1 に答える 1

1

この質問は、sizeof(bool)一部のコンパイラで1、他のコンパイラで2である理由を尋ねる複雑な方法です。実際、C ++標準ではサイズを1にする必要はありませんbool。つまり、異なるコンパイラーが異なるサイズを割り当てる可能性があり、これがあなたの質問に対する答えです。

1である必要がない理由については、に関するこの関連する質問を参照してくださいsizeof(bool)

boolここで関与する理由がまったくわからない場合は!、double値で演算子を呼び出すためです。これは、ゼロ以外かどうかをチェックするのと同じであり、そのようなチェックは。を返しますbool。他の2つの出力は、基本的にsizeof(int)(それ自体int / intであるためint)、整数の値です。

于 2012-11-12T13:54:00.167 に答える