本帖最后由 lixiangzhou 于 2014-3-8 22:03 编辑
当你输完 1@3= 时,会找到scanf("%lf%c%lf%c", &a, &c, &b, &d)函数,执行结果是:
a = 1.000000, c = '@', b = 3.000000, d = ''; e = ''; // e是空值
当输入 · 时,由于 · 不是double类型的值,而是char类型的值,就回去找 scanf("%c", &e)函数,此时e='·',但流程并没有转到 scanf("%c", &e);那一行,而是在scanf("%lf%c%lf%c", &a, &c, &b, &d);这行。
此时各变量的值:
a = 1.000000, c = '@', b = 3.000000, d = ''; e = '·';
由于c='@',输出-> 输入错误。而e='·',则退出循环。
|