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

bm142857 Reply 9 years 31 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 31 weeks ago
둘은 다른겁니다.
booksky Reply 9 years 31 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 31 weeks ago
와우.. 그렇네요.. 감사합니다...