#include<stdio.h>
int main(){
int n = 0;
int n1;
int t=0;
char ch;
while (scanf_s("%c", &ch,sizeof(char)) != EOF){
printf("%c %d ", ch,n);
if (((int)ch - (int)"0")<10 && ((int)ch - (int)"0")>0)n += (int)((int)ch - (int)"0");
printf("%d\n", n);
}
printf("%d\n", n);
return 0;
}
这段代码的目的是对char类型的数字进行求和,可是假如不加上if (((int)ch – (int)”0″)<10 && ((int)ch – (int)”0″)>0)的话while中止后n的值会改变
解决方案
80
最后输入后还会留下换行符\n, 假如没有if
\n会再下一次循环接收进来,只要有\n在缓冲区,就不满足你退出循环的条件
建议单步调试跟踪程序运行便可知