c - What does this not work for getchar() method? -
this own experiment understand goes under hood, program mean compiler?
main() { int c; printf("%d\n",c); printf("%d ", getchar()); while ((c == getchar()) != eof){ putchar(c); } } when c must equal getchar() (c == getchar()), not proceed through while loop? confused of own code, of c must mean!
also, in code:
main() { int c; c = getchar() while ((c = getchar()) != eof) putchar(c); } if modify int c int c = getchar(), why cannot somply write this:
while (c != eof)( putchar(c); c = getchar(); } the compiler should know previous statement c = getchar(), why have write statement again? sorry, if confused.
while ((c==getchar()) != eof) { ... } is while loop. evaluates condition each iteration of loop , terminates if condition false.
in case, condition is:
(c==getchar()) != eof) which nonsensical expression, let's examine anyway:
first, program evaluate:
getchar() this grabs keystroke standard input. value of expression value of key.
then:
c==getchar() this takes result of getchar() , compares whatever in c. in first program, c uninitialized, value indeterminate. if c had defined value, c==getchar() evaluate either true or false. since c had no defined value, c==getchar() has no defined value.
now program evaluates:
(c==getchar()) which still true or false, except in case undefined.
the program next considers:
(c==getchar()) != eof that is, compares true-false value eof; makes no particular sense, , in case still have undefined behavior of uninitialized c.
in sum, if c initialized, expression fetch key standard input , compare either true or false eof. said, nonsensical expression.
Comments
Post a Comment