今天伯樂在線看到一個攜程2016研發工程師的題目,本身作了一下,題目很簡單:ios
#include<stdio.h> int main() { char c='0'; printf("%d %d",sizeof(c),sizeof('0')); return 0; }
編譯和執行上述c語言代碼,系統將會輸出什麼?spa
下面是我在Mac上用gcc和g++編譯的代碼以及結果:code
//C++文件 #include<iostream> #include<stdio.h> using namespace std; int main(void) { char a = '0'; printf("%ld,%ld",sizeof(a),sizeof('0')); return 0; } //輸出結果爲1,1
//C文件 #include<stdio.h> int main(void) { char a = '0'; printf("%ld,%ld",sizeof(a),sizeof('0')); return 0; } 輸出結果爲1,4
形成結果有這樣差別的解釋以下:
C語言的規定是把sizeof(‘0’)解析爲sizeof(int),int爲4字節
C++則規定爲sizeof(‘0’)解析爲sizeof(char),char爲1字節io