2016-06-16 16 views
0

私は(コード、マックVS)sizeof演算子私のsizeof演算子に何が問題なのですか?

#include <stdio.h> 

int main() 
{ 
    char i; 
    int j; 
    double k; 

    printf("%d\n", sizeof(i)); 
    printf("%d\n", sizeof(j)); 
    printf("%d\n", sizeof(k)); 

    return 0; 
} 

を試してみましたが、警告は言う:間違っている

warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat] 
printf("%d\n", sizeof(k)); 
     %lu 

何?私はシンタックスに何も問題がないと思うし、それは私に出力を示す。

+0

size_tの印刷のための正しい指定子は、これはC++質問、またはCまたは何か他のものはありますか?言語タグを追加してください。 –

答えて

0

sizeof演算子に問題はありません。
printfに間違った指定子を使用しています。

sizeofは、size_tを返します。
size_tの実際の型は実装定義です。このように
%z

使用printf("%zu\n", sizeof(k));

+0

Microsoftが '%zu'をサポートしているかどうか分からないので、それが動作しない場合、別のオプションは' printf( "%d \ n"、(int)sizeof i); ' –

+1

OPのコンパイラ'%lu'を提案しています。 –

+0

"%zu"、 "%lu"、 "(int)sizeof"はすべて私のために働いています。ありがとう。 –

関連する問題