2017-09-25 23 views
1

私は、次のコードを持っている:C sizeof( 'a')= 4でsizeof(char)= 1の理由は何ですか?

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char * argv[]){ 
    printf("size of tab = %d\n", sizeof('\t')); 
    printf("size of a = %d\n", sizeof('a')); 
    printf("size of char = %d\n", sizeof(char)); 
} 

出力:

size of tab = 4 
size of a = 4 
size of char = 1 

なぜ'a'の大きさとchar異なるの大きさがあります。 'a'charではありませんか?

+1

'のはsizeof( '\ tは')'実際に 'int'が' '\ tの' のASCII値である 'int'の大きさを計算しています'と同様で、sizeof( 'a')の場合も同様です。 –

+0

' 'a''は 'int'です。 Cのすべての定数は少なくともint型です。 – chux

+0

6.4.4.4文字定数p2_An整数文字定数は、 'x'のように一重引用符で囲まれた の1バイト以上のマルチバイト文字のシーケンスです._およびp10 _An整数型の定数はint型です。6.5.3.4 sizeof ...演算子p4 _ sizeofが、char型、unsigned char型、または signed char型(またはその修飾バージョン)のオペランドに適用される場合、結果は1です。 – BLUEPIXY

答えて

1

'aは、文字がaであるintです。 これらの式の値を見てみましょう:

sizeof((char) 'a'); 
char a = 'a'; 
sizeof(a); 
関連する問題