我有将整数转换为文本的代码,当用户输入要转换的数字时,它将以英文文本显示所有数字,直到该数字为止。但是,如果我输入的数字大于10,则显示为:
七 八 九 TenTwenty
此后的一切都很好。这是代码
restrict
提前谢谢
答案 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
语句中的不同位置,而没有诸如break
或return
之类的其他控制流机制。 ,您的程序将一直在下一个case
标签中继续运行,直到您中断它或到达切换结束为止。
尝试一下:
case 1:
if (second == 0)
cout << "Ten";
break; // exit the switch, do not continue to case 2
case 2:
...