scanf函数是有返回值的。 正常输入,返回成功读取的数据个数。 当读到文件结尾时,返回-1.【~(-1) = 0】 将两个语句用一个逗号拼成一个语句,最终语句的值等于最后一个逗号后面的语句的值。 即int a, b, c; c = ( a = 1, b = 2); 那么c = 2; 所以, while (scanf("%d",&n),n) //逗号语句 当n为0时中止循环 while (~scanf("%d",&n)) 当读到文件结尾时中止循环 (windows下可通过按“Ctrl +Z”、linux下可通过“Ctrl + D”来达到“输入”文件结束符的效果)
while(scanf()!=EOF) 效果与 while(~scanf()) 相同