en en ko ko ko ko ko ko ko en ko pt ko ko ko en ko en ko ko ko en ko en ko en ko en ko nl ko nl ko ko nl ko uk ko en nl ko ko ko ko ko ko ko fr ko ko nl ko ko ko ko ko ko zh en en en en en pt en it en en en sv fr en en en en en en en es fr en en en fr ja en en de en en en en en hu ja pt ru en en en en en ko ko ko ko ko ko ko en pt sv en ko ko ko ko ko ko ko ko ko ko ko en en
c++ Archives - Page 2 of 214 - IT HOW
C와 C ++에서 문자의 크기는 얼마입니까? 내가 아는 한 char의 크기는 C와 C ++에서 1 바이트입니다.
#include   int main() { printf("Size of char : %d\n", sizeof(char)); return 0; }
#include   int main() { std::cout << "Size of char : " << sizeof(char) << "\n"; return 0; }
놀랍지 않게, 둘 다 출력을 제공합니다. Size of char : 1
이제 우리는 같은 문자가 표시되는 것을 알고 'a', 'b', 'c', '|'난 그냥 다음에 위의 코드를 수정 … 그래서 :
#include   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
#include   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')C와 C ++에서 다른 값을 반환합니까?
C에서 문자의 형 상수 등이 'a'실제로하다 int(4)의 크기 (또는 다른 구현에 의존 값)와 함께,. C ++에서 유형은 char1이며 크기는 1입니다. 이는 두 언어 간의 많은 작은 차이점 중 하나입니다.
Paul이 말했듯 이 C에는 있지만 C ++ 에는 있기 때문 'a'입니다 .intchar
몇 년 전에 다음과 같이 작성한 내용에서 C와 C ++의 차이점을 다룹니다. http://david.tribble.com/text/cdiffs.htm
C에서 문자 리터럴의 유형은 C ++에서 int 및 char 입니다. 이것은 함수 오버로딩 을 지원하는 데 필요한 C ++ 입니다. 이 예를보십시오 :
void foo(char c) { puts("char"); } void foo(int i) { puts("int"); } int main() { foo('i'); return 0; }
C 언어 에서 문자 리터럴은 char유형 이 아닙니다 . C는 문자 리터럴을 정수로 간주합니다. 따라서 sizeof('a')와 사이에는 차이가 없습니다 sizeof(1).
따라서 문자 리터럴의 크기는 C의 정수와 같습니다.
C ++ 언어 에서 문자 리터럴은 유형입니다 char. cppreference의 말의 :
1) 좁은 문자 리터럴 또는 일반 문자 리터럴 (예 : 'a'또는
'\n'또는) '\13'. 이러한 리터럴은 유형char 과 실행 문자 세트의 c-char 표현과 동일한 값을 갖습니다. c-char가 실행 문자 세트에서 단일 바이트로 표현할 수없는 경우 리터럴에는 int 유형과 구현 정의 값이 있습니다.
따라서 C ++에서 문자 리터럴은의 유형입니다 char. 따라서 C ++에서 문자 리터럴의 크기는 1 바이트입니다.
Alos, 프로그램에서 sizeof연산자에 잘못된 형식 지정자를 사용했습니다 .
C11 §7.21.6.1 (P9) :
변환 스펙이 유효하지 않은 경우 동작이 정의되지 않습니다.
따라서 %zu대신 형식 지정자를 사용해야 합니다 %d. 그렇지 않으면 C에서 정의되지 않은 동작입니다.
이 글은 c++ 카테고리에 분류되었고 c, c++, types 태그가 있으며 [호호] 야야님에 의해 2022년 9월 12일에 작성되었습니다.
기본 Wi-Fi 설정 및 암호 배포 및 설정을 설정하고 처럼 그런
제로 충전은 virtualbox 동적 디스크 이미지의 크기를 증가시킵니다 있습니다.) 추가 질문 중 하나는 디스크 크기를 늘리지
Amazon ECS에서 서비스 컨테이너 업데이트 업데이트 한 경우, 해당 이미지와
가운데 클릭을위한 트리플 핑거 탭? 클릭을 위해
설치된 응용 프로그램 중 / usr / bin 또는 사용자의 홈 디렉토리 중 어떤 것이 더 낫습니까? 디렉토리 에 설치하는 것이 더
apthow.com powered by hoya