整型字元常量和字元字面量的區別 sizeof(char) 和 sizeof('a')

飛翔的黃瓜發表於2017-08-01
編譯和執行如下c語言程式碼,系統將會輸出什麼?
1
2
3
4
5
6
7
#include<stdio.h>
intmain()
{
    charc='0';
    printf("%d %d",sizeof(c),sizeof('0'));
    return0;
}

正確答案: A   你的答案: C (錯誤)

1 4
2 2
1 1
2 1


C語言: char a = 'a'; sizeof(char) = 1 sizeof(a) = 1 sizeof('a') = 4 
C++語言: char a = 'a'; sizeof(char) = 1 sizeof(a) = 1 sizeof('a') = 1 
字元型變數是1位元組這個沒錯,奇怪就奇怪在C語言認為'a'是4位元組,而C++語言認為'a'是1位元組。 
     
原因如下:  
  C99標準的規定,'a'叫做整型字元常量(integer    character constant),被看成是int型,所以在32位機器上佔4位元組。
  ISO C++標準規定,'a'叫做字元字面量(character literal),被看成是char型,所以佔1位元組

相關文章