Programing

C / C ++의 작은 따옴표, 큰 따옴표 및 sizeof ( 'a')

crosscheck 2020. 12. 13. 08:58
반응형

C / C ++의 작은 따옴표, 큰 따옴표 및 sizeof ( 'a')


나는 C 또는 C ++에서 Single quotes vs. double quotes 질문을보고있었습니다 . 주어진 설명을 완전히 이해할 수 없어서 프로그램을 작성했습니다.

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

gcc와 g ++를 모두 사용하여 컴파일했으며 다음은 내 출력입니다.

gcc :

sizeof(ch)   : 1  
sizeof('a')  : 4  
sizeof("a")  : 2  
sizeof(char) : 1  
sizeof(int)  : 4  

g ++ :

sizeof(ch)   : 1  
sizeof('a')  : 1  
sizeof("a")  : 2  
sizeof(char) : 1  
sizeof(int)  : 4  

g ++ 출력은 나에게 의미가 있으며 그것에 대해 의심의 여지가 없습니다. gcc에서 무엇 sizeof('a')과 달라야 할 필요가 sizeof(char)있습니까? 그 뒤에 실제 이유가 있습니까 아니면 단지 역사적입니까?

또한 경우 C에서 char'a'다른 크기를 가지고, 그것은 우리가 쓸 때 의미하지 char ch = 'a';, 우리가 묵시적 타입 변환을하는거야?


C에서는 문자 상수 'a'가 type int이고 C ++에서는 char.

마지막 질문에 대해서는 네,

char ch = 'a';

를 암시 적으로 변환 int합니다 char.


문자가 없기 때문에 문자에 연결된 정수만

a는 62 인 것 같아요

printf ( "% c", 62); 당신은 캐릭터를 볼 것입니다

참고 URL : https://stackoverflow.com/questions/10606807/single-double-quotes-and-sizeofa-in-cc

반응형