我输入的是12345,'\n'的ASCII码是10,0~9的ASCII码是48~57,为什么当getchar识别到'\n'后,明明不符合条件,却还在循环?
while ('0'<= (c=getchar()) <= '9')
改成:
while ('0'<= (c=getchar()) && c<= '9')
因为:
while ('0'<= (c=getchar()) <= '9') 相当于 while (('0'<= (c=getchar())) <= '9') 相当于 while ((0或者1) <= '9')
数字0或者1都比‘9’小,所以永远为真。
c = getchar();
while('0'<=c && c<='9')
pass;
表达错误,条件应该表达为('0' <= c && c <= '9')。
你这样的表达相当于 ('0' <= c) <= '9',条件永远为真。
请区分数学表达式和编程语言表达式。