#include <stdio.h>
int main(void)
{
char test = 0x80;
printf("%c\n", test); /* To remove the "unused" warning */
return 0;
}
나는 문자가 하나의 바이트임을 보장합니다. 0x80도 1 바이트입니다. 그럼 왜 다음과 같은 오류/경고 메시지가 나옵니까?왜이 프로그램의 오버플로가 발생합니까?
error: overflow in implicit constant conversion [-Werror=overflow]
내 경우에는 경고를 오류로 처리하기 때문에 오류가 발생합니다.
0x80은이 경고/오류가 나타나는 최소값입니다. 0x7F로 변경하면 정상적으로 컴파일됩니다. 나는 ideone.com을 'C99 strict'옵션과 함께 사용하여 코드를 컴파일했다. gcc-4.7.2를 사용하여보고되었습니다.
오. 나는 그런 작은 세부 사항을 잊어 버린 것을 믿을 수 없다. 감사! –