2013-07-31 4 views
9

전통적으로 -1305에 대해서만 정의 되었기 때문에 signed char 술어를 술어로 전달하는 오류가 발생했습니다. 따라서 -128에서 -2까지는 배열 범위를 벗어나는 결과를 가져올 수 있습니다.ctype.h에 아직 부호없는 char이 필요합니까?

최신 버전의 C에서 정의되지 않은 동작을 피하려면이 문제가 계속 수정되었거나 여전히 엄격하게 말해 unsigned char을 사용해야합니까?

+0

현대 프로그램은 128-255 범위의 문자에 직면 할 수있는 기회가 증가합니다. 이는 서명 된 문자로 볼 때 음수로 잘못 해석 될 수 있으므로 "그 어느 때보도"입니다. –

답변

11

최신 버전의 C에서 정의되지 않은 동작을 피하기 위해 여전히 엄격하게 말하면 부호없는 char을 사용해야합니까?

, 처리 C11 draft standard 섹션 7.4 문자에서 < ctype.h> 제 말한다 ( 강조 광산) :

헤더 분류 및 매핑에 유용한 여러 가지 기능을 선언 자입니다. 198) 모든 경우에 인수는 int이며, 의 값은 이 부호없는 char로 표현되거나 매크로 EOF의 값과 같아야합니다. 인수의 값이 이면 다른 동작은 정의되지 않음입니다.

이것은 또한 draft C99 standard에 대해서도 마찬가지입니다. 동일한 섹션에서 찾을 수 있습니다.