Without brackets, the `...!= EOF...` part of the expression is evaluated first. That's why it is equal to 1 and displays accordingly with printf("%d\n", c);
With the brackets, the `...getchar()...` part of the expression is evaluated first. Consequently, EOF is not equal to 1, getchar() does its job and scans the streams, the decimal values for the character in my stream display accordingly with printf.
Not exactly. getchar() does its work in either case. First it gets that "49". Then we test the 49 to see if it is EOF. It's not. So the (49 != EOF) evaluates to 1. Now we store that 1 in the variable c.
When you put the parenthesis in, getchar() gets that 49. Then we store the 49 in "c". Now we test to see if c is EOF.