C/C++에서 sizeof('a')의 차이


C/C++에서 char의 크기는 1이라고 배웠는데요 C/C++에서 print('a')한 결과가 달라요

C에서:

#include <stdio.h>
int main() {
  printf("Size of char : %d\n",sizeof(char));
  return 0;
}

C++에서:

#include <iostream>
int main() {
  std::cout<<"Size of char : "<<sizeof(char)<<"\n";
  return 0;
}

하면 똑같이 1나오는데

C에서:

#include <stdio.h>
int main() {
  char a = 'a';
  printf("Size of char : %d\n",sizeof(a));
  printf("Size of char : %d\n",sizeof('a'));
  return 0;
}

하면 Size of char : 1 Size of char : 4

C++에서:

#include <iostream>
int main() {
  char a = 'a';
  std::cout<<"Size of char : "<<sizeof(a)<<"\n";
  std::cout<<"Size of char : "<<sizeof('a')<<"\n";
  return 0;
}

하면 Size of char : 1 Size of char : 1

이 나와요 왜죠? 왜 sizeof('a') 한 결과가 다른거죠?

  • 2016년 01월 05일에 작성됨

조회수 399


1 답변


좋아요
0
싫어요
채택취소하기

C에서는 'a'같은 캐릭터형 상수는 사실은 int입니다. 그래서 sizeof('a')에서 4가 출력되는 것이지요

반면에 C++에서는 'a'는 char형입니다. 그래서 sizeof('a')에서 1이 출력되지요.

C랑 C++은 비슷해보이지만 다른 언어라서 이런 차이가 간혹 있습니다.

  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close