변수 할당에 대해서 질문할 점이 있습니다.

bm142857 Reply 9 years 3 weeks ago
#include <stdio.h> main() { int nl; nl = 0; while(getchar()!=EOF) { if(getchar()=='\n') ++nl; } printf("%1d", nl); } #include <stdio.h> main() { int nl; nl = 0; int c; while((c=getchar())!=EOF) { if(c=='\n') ++nl; } printf("%1d", nl); } 둘은 같은건가요?
pichulia Reply 9 years 3 weeks ago
둘은 다른겁니다.
booksky Reply 9 years 3 weeks ago
둘은 다르게 작동할 것입니다. getchar()라는 함수는 책에도 나와있듯 사용자로부터 입력을 받는 함수입니다. 예를 들어 "TEST"라는 입력이 위의 코드와 아래 코드에 동시에 들어온다고 가정을 해보겠습니다. 위의 코드는 while(getchar()!=EOF)에서 처음에 T를 받게 됩니다. 그러다가 내려가서 if(getchar()=='\n')에서는 T가 아닌 새로운 입력을 받게 되므로 E를 입력받고 '\n'과 비교하게 됩니다. 하지만 아래코드는 while((c=getchar())!=EOF)에서 처음으로 T를 입력받고 이 값을 c라는 변수에 집어넣습니다. 그 후 if(c=='\n')에서는 새로운 입력을 받는 것이 아니라 c라는 변수와 '\n'을 비교하게 됩니다. 즉 T와 '\n'을 비교하게 되는 것이지요.
bm142857 Reply 9 years 3 weeks ago
와우.. 그렇네요.. 감사합니다...