2009-04-18 5 views

답변

3

을 감안할 때이 것을 무엇을 당신이 요구했습니다

char char_shift(char c, int n) { 
    return (char)(c + n); 
} 

당신이, 당신의 질문을 다시 (아마도 'Z'+ 1 = 'A'것을 의도) 뭔가 다른 의미가 있다면 ...

+0

질문은 실제로 불완전합니다 - 어떻게 오버플로/언더 플로우가 처리되어야합니까? 이것이 없으면 완전한 해결책을 제시 할 수 없습니다. –

7

이렇게하려면 함수를 호출 할 필요가 없습니다. 문자에 숫자를 직접 추가하기 만하면됩니다. 예를 들어

:

'a' + 3 

이 평가

C에서
'd' 
+0

이것은 A-Z 문자에 대해 ASCII 및 문자 세트를 기반으로합니다. 이것은 현대 세계의 모든 관련 기계를 다루고 있습니다. EBCDIC은 큰 예외 일 것이다. 그러나 꽤 많이 멸종 된 것으로 보인다. –

+2

@ liw.fi와 같은 주석을 다시 생각해 볼 수 있습니다.EBCDIC은 z/OS에서 잘 작동하며 모든 세계적 수준의 은행 및 기타 금융 기관을 운영합니다. 이 플랫폼에서 실행되는 캡슐화 된 UNIX에서도 (ASCII 순서에 따라 FOSS를 컴파일하는 데 어려움을 겪을 수 있습니다. zLinux는 ASCII를 사용하므로 더 낫습니다). – paxdiablo

2

으로하는 char 정수 타입 (int 등 및 long long int).

이 값은 구현에 따라 다르지만 일반적으로 저장할 수있는 값 범위가 -128에서 127 또는 0에서 255로 제한된다는 점을 제외하면 다른 정수 유형과 동일하게 작동합니다. 예를 들어

:

char x = 3; 
char y = 6; 
int z; 

z = x + y; 
printf("z = %d\n", z); //prints z = 9 

char 타입 (일반적 어레이의 일부) 대부분 텍스트를 저장하는 데 사용되는 각 문자를 숫자로 인코딩된다.

문자 및 문자열 상수는 편리합니다.

char x = 'A'; 
char str[] = "AAA"; 

따라서

char x = 65; 
char str[] = {65, 65, 65, 0}; 

, 뭔가 동일합니다 : 우리가 가정하면 기계가 다음의 경우 자본 A는 65로 인코딩 된 (오늘날 거의 유비 쿼터스)를 ASCII 문자 집합을 사용 'X' + 6처럼 완벽한 결과를 얻을 수 있습니다. 결과는 문자 인코딩에 따라 다릅니다. ASCII에서는 88 + 6에 해당하며 94 인 것은 '^'입니다.