C和C++中的sizeof

今天伯樂在線看到一個攜程2016研發工程師的題目,本身作了一下,題目很簡單:ios

#include<stdio.h>
int main()
{
     char c='0';
    printf("%d %d",sizeof(c),sizeof('0'));
     return 0;
 }

編譯和執行上述c語言代碼,系統將會輸出什麼?spa

  • 1 4
  • 2 2
  • 1 1
  • 2 1

下面是我在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

相關文章
相關標籤/搜索