나는 R. 에게 K &에 문제를 문제 1.6을 해결하기 위해 노력했다입니다 -C = (! getchar가() = EOF)
- 표현
getchar() != EOF
인지 확인 0 또는 1
#include <stdio.h>
int main(){
int expr_val, c;
printf("Input a character and press enter: ");
expr_val = (getchar() != EOF);
printf("expr_val: %d\n", expr_val);
return 0;
}
난 아무것도에 입력, 그것이 내가 execut 1의 값을 반환
나는 작동하는 솔루션을 발견 EOF (Ctrl + D)를 누르면 0의 값이 반환됩니다.
그러나 코드에서 EOF를 숫자 3으로 바꾸면 프로그램이 예상대로 작동하지 않습니다. 입력 값이 5이면 1을 반환하고, 3을 입력하면 1을 반환합니다.
제 생각에 3 값을 입력하면 값이 반환됩니다. 내가 5.
의 값을 입력하면 내가받을 값보다 다른이
#include <stdio.h>
int main(){
int expr_val, c;
printf("Input a character and press enter: ");
expr_val = (getchar() != 3);
printf("expr_val: %d\n", expr_val);
return 0;
}
사람이이 경우 이유에 대해 가르치 려 수 (나는 단지 3에 EOF를 변경)?
감사합니다. 여러분의 답변은 모두 매우 명확하고 도움이되었습니다. EOF를 '3'또는 51로 변경하면 코드가 제대로 작동합니다.
'3'과 '3'이 서로 다릅니다.자세한 내용은 [ASCII 테이블] (http://www.asciitable.com/)을 참조하십시오. –
'expr_val = (getchar()! = 'A');'그리고 타입'A'. – chux
K & R 질문은 최소한 표준 C와 관련해서는 다소 바보입니다. 관계 연산자 (예 :'! = '연산자로 수행)의 결과는 정의에 따라 0 또는 1입니다. –