#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在缓冲区,就不满足你退出循环的条件
建议单步调试跟踪程序运行便可知