整数到文本无法正确显示

时间:2018-10-29 20:05:26

标签: c++

我有将整数转换为文本的代码,当用户输入要转换的数字时,它将以英文文本显示所有数字,直到该数字为止。但是,如果我输入的数字大于10,则显示为:

七 八 九 TenTwenty

此后的一切都很好。这是代码

restrict

提前谢谢

1 个答案:

答案 0 :(得分:1)

在以下代码段中:

case 1:
    if (second == 0)
        cout << "Ten";
case 2:
    ...

如果到达case 1并到达second != 0,则程序控件将fall through移至下一个case标签,在这种情况下为2。这是因为您永远不会break中的case 1或以其他方式中断流程。

发生这种情况的原因是,案例标签本质上类似于goto labels,它们没有定义类似if语句或其他循环的作用域,并且不同案例的执行也不是相互排斥的。相反,大小写标签仅导致控制流不连续地跳转到switch语句中的不同位置,而没有诸如breakreturn之类的其他控制流机制。 ,您的程序将一直在下一个case标签中继续运行,直到您中断它或到达切换结束为止。

尝试一下:

case 1:
    if (second == 0)
        cout << "Ten";
    break; // exit the switch, do not continue to case 2
case 2:
    ...