2012-04-10 8 views
0

나는 C 언어를 배우는 책 "The C Programming Language"에서 책을 읽었으며, s[i] - '0' 산수를 들었는데, 그들은 s [i]에 저장된 문자의 숫자 값을 제공한다고 말했다. 나는 그것을 이해하지 못했다. 어떻게 뺄셈에 의해 가치를 부여 할 수 있을까? 참고 atoi 함수는 숫자 문자열을 해당 숫자로 변환합니다. 감사C 문자 값 산술

+1

가능한 중복 : http://stackoverflow.com/questions/10023180/how-does-character-representation-in-array -index-work-in-this-case –

+0

모든 빠른 답장을 보내 주셔서 감사합니다. 지금 이해합니다. 그리고 내가 게시 한 다른 질문도 확인했습니다. 감사합니다 –

답변

3

기본적으로 이해해야 할 점은 현대 컴퓨터에서 모든 정보가 일련의 바이트. 각 프로그램에 따라 을 해석하여 각 바이트을 결정합니다. 따라서 문자는 사람이 읽을 수있는 문자 또는 기호를 나타내는 숫자 값인 하나 이상의 바이트 일뿐입니다. 예를 들어, ASCII에서 문자 'A'는 숫자 값 65로 표시됩니다.

즉, C와 같은 특정 프로그래밍 언어에서는 문자를 숫자 값으로 처리 할 수 ​​있습니다. 예를 들어 C에서 표현식 'A' + 1을 사용하면 66을 얻을 수 있습니다. 이는 B의 ASCII 값입니다 (컴파일러/플랫폼이 ASCII 호환 문자 세트를 사용한다고 가정).

+2

하지만 사실은''A '+ 1 =='B ''는 C에서 보장되지 않습니다. 그것은 ASCII에는 해당되지만 모든 문자 세트에는 해당하지 않습니다. – ouah

5

소스 및 실행 기본 문자 세트 모두 '9'-'0'의 값

C.

모든 문자 세트의 연속 값을 보장하는 문자 (C99, 5.1.2p3) " 위의 10 진수 목록에서 0 이후의 각 문자 값은 이전 값보다 큰 값이됩니다. "

그것은 후드 char에서 '1' == '0' + 1

6

가 수치로 표시되어, 예를 들어을 의미한다. 숫자 0-9의 문자는 오름차순 숫자 값으로 저장됩니다. 0을 기본 값으로 사용하면 간단한 빼기는 0-9 문자를 동등한 int 값으로 변환 할 수 있습니다.

6

가능한 중복 : See here

'0'는 문자 집합 48 나타냅니다. 따라서 이것을 '1', '2'과 같이 다른 문자 값을 사용하여 뺍니다 ('0'). '9' - '0'9입니다.

참고 차이는 우리가 모두 문자 하위됩니다 '9' - 여기 '0'을 모두 char