에 INT와 문자를 비교 할당 할 수 있습니다. 위의 프로그램에서 c
유형을 int
으로 지정했습니다. 가장 중요한 것은 EOF
이 헤더 함수에 정의 된 상수 인 integer
입니다.이유는/나는 다음과 같은 코드가 C
이렇게 뭔가에 대한 코드 변경 이제 경우 :
#include <stdio.h>
main()
{
char c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
이 코드는 작동한다! C 설명서에 따라 분을 기다리십시오. getchar()
은 int
을 반환하지만, 위의 코드에서 볼 수있는 것은 char
입니다. 그리고 C 컴파일러는 어떤 에러도 발생시키지 않습니다. 또한 while
루프에서 나는 char
인 c
을 int
인 EOF
과 비교했으며 컴파일러는 오류를 발생시키지 않고 프로그램을 실행합니다!
위의 두 경우에 컴파일러에서 오류가 발생하지 않는 이유는 무엇입니까?
미리 감사드립니다.
C는 동적이 아니며 숫자 형식간에 암시 적 캐스트를 허용하기 만합니다. 두 번째 코드는 '\ xFF'문자를 EOF (EOF == -1 인 시스템에서)로 해석하지만 첫 번째 코드는 그렇지 않습니다. 따라서 getchar에서 int를 사용하는 이유입니다. – ughoavgfhw
왜 downvote? –
@ughoavgfhw 필자는'char'가 부호없는 머신에서'\ xFF' 일 필요가 없다. 무한 루프로 컴파일 될 수도있다. –