scanf는 성공적으로 받아온 수를 return합니다.
만약 에러가 발생하거나 EOF(End of File)을 만나면 -1을 리턴합니다.
EOF는 콘솔에서 ctrl + Z로 입력이 가능합니다.
문자열을 끝날 때 까지 입력 받는 방법!
1 2 3 | 1. while (scanf("%d", &n) != EOF) 2. while (scanf("%d", &n) != -1) 3. while (~scanf("%d", &n)) | cs |
EOF는 -1을 나타내므로 1과 2는 같은 방법입니다.
3번에 대해서 설명하겠습니다!
~는 NOT입니다.
NOT을 왜쓰냐!
-1은 2진수로 표현하면 1111 1111 ... 1111 입니다.
-1에 ~를 붙이면 0000 0000 ... 0000 즉 0이 됩니다.
그래서 scanf로 EOF(-1)을 받으면 0을 반환해서 while문을 빠져나올 수 있는 것입니다.