programing

문자를 선언할 때 char와 int의 차이

batch 2023. 6. 15. 21:42
반응형

문자를 선언할 때 char와 int의 차이

저는 이제 막 C를 배우기 시작했는데 int와 char를 사용하여 문자를 선언하는 것이 다소 혼란스럽습니다.

저는 문자의 "정수"가 문자의 ASCII 소수라는 의미에서 모든 문자가 정수로 구성되어 있다는 것을 잘 알고 있습니다.

그렇긴 하지만, 저는 문자를 선언하는 것이 완벽하게 가능하다는 것을 배웠습니다.intASCII 소수를 사용하지 않습니다.예: 변수 선언test인물로서'X'다음과 같이 쓸 수 있습니다.

char test = 'X';

그리고.

int test = 'X';

그리고 두 개의 문자 선언에 대해 변환 문자입니다.%c(테스트가 다음과 같이 정의되더라도)int).

따라서 다음을 사용하여 문자 변수를 선언하는 것 사이의 차이가 문제입니다.char그리고.int사용 시기 및int문자 변수를 선언하시겠습니까?

차이는 변수의 바이트 단위 크기이며 변수가 보유할 수 있는 여러 값입니다.

0에서 127 사이의 모든 값을 사용하려면 문자가 필요합니다(포함).따라서 일반적인 환경에서는 정확히 1바이트(8비트)를 차지합니다.서명 여부(-128 - 127) 또는 서명되지 않은 상태(0 - 255)는 표준에 의해 지정되지 않습니다.

int는 16비트 이상의 부호 있는 단어여야 하며 -32767과 32767 사이의 모든 값을 허용해야 합니다.즉, int는 char의 모든 값(후자 부호 또는 부호 없음)을 허용할 수 있습니다.

변수에 문자만 저장하려면 다음과 같이 선언해야 합니다.char사용int기억을 낭비하고 미래의 독자를 오도할 수 있습니다.이 규칙에 대한 일반적인 예외 중 하나는 특수 조건에 대해 더 넓은 값을 처리하려는 경우입니다.예를 들어 함수는fgetc표준 라이브러리에서 반환됨으로 선언됩니다.int:

int fgetc(FILE *fd);

특별한 가치가 있기 때문입니다.EOF(End Of File의 경우)는 다음과 같이 정의됩니다.int문자 크기 이상을 의미하는 값 -1(2차원 시스템에서 모든 비트 대 1).그런 식으로 어떤 문자(공통 시스템에서 8비트만)도 EOF 상수와 같을 수 없습니다.함수가 단순을 반환하도록 선언된 경우charEOF 값과 (유효한) 문자 0xFF를 구분할 수 없습니다.

그렇기 때문에 다음 코드는 불량이며 절대 사용해서는 안 됩니다.

char c;    // a terrible memory saving...
...
while ((c = fgetc(stdin)) != EOF) {   // NEVER WRITE THAT!!!
    ...
}

루프 내부에는 문자가 있으면 충분하지만 문자 0xFF를 읽을 때 테스트가 실패하려면 변수가 int여야 합니다.

char유형에 여러 역할이 있습니다.

입니다.char,short,int,long등등, 그래서 그것은 단지 숫자를 위한 또 다른 용기입니다.

두 번째는 기본 스토리지가 가장 작은 단위이며 다른 모든 개체의 크기는 다음과 같습니다.char(sizeof의 단 로 된 숫 반환니다합자를의 로 된 합니다.char,그렇게sizeof char == 1).

세 번째는 문자열에서 캐릭터의 역할을 한다는 것입니다. 확실히 역사적으로 말이죠.이렇게 이게볼, 의가는의 .char를 들어문자에 의 "" "ASCII" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "char단일 문자로 매핑).

int는 대분바아의에서처 4이반면인의, 는크기트키입니다.char1바이트입니다.

일반적으로 문자를 char로 선언하고 더 큰 값을 유지할 수 있는 정수에 int를 사용해야 합니다.대부분의 시스템에서 문자는 8비트인 바이트를 차지합니다.시스템에 따라 이 문자는 기본적으로 서명되거나 서명되지 않을 수 있으므로 0-255 또는 -128-127 사이의 값을 유지할 수 있습니다.

int는 32비트 길이일 수 있지만 정수에 대해 정확히 32비트를 원한다면 대신 int32_t 또는 uint32_t로 선언해야 합니다.

차이는 없다고 생각합니다만, 사용하지 않을 메모리를 추가로 할당하는 것입니다.여러분은 또할수있다니습을 할 수 .const long a = 1;하지만 그것은 사용하기에 더 적합할 것입니다.const char a = 1;대신.

언급URL : https://stackoverflow.com/questions/37241364/difference-between-char-and-int-when-declaring-character

반응형