我尝试制作这个简单的程序来模拟在游戏中打开一个箱子。但是,当我运行它时(首先输入1,2或3,然后输入大数字,如100),它几乎可以正确地打印出所有内容,但有时(100次中的一次或两次)它会打印出奇怪的符号而不是它应该打印的字符串。那是为什么?
Char [] c={`t`,`f`};
For(char CH: c){
For(char c1: c){
For(char c2: c){
System.out.println(CH+""+c1+c2);. }}}
答案 0 :(得分:0)
我马上看到你有函数返回字符串,可以在不返回的情况下退出。这导致了C ++值得注意的臭名昭着的“未定义行为”。
请注意,在C ++退出函数作用域而不返回时,不会默认构造返回值。如上述评论中添加警告应指出它们。
在else子句中,您有
的变体cout << "AN ERROR HAS OCCURRED";
你应该做那个
#include <assert.h>
...
string get_stuff() {
if (something) {
...
} else if (something_els) {
...
} else {
assert(!"Default case hit");
}
}
这将在大多数环境中停止调试器中的程序,并打印包含默认情况下的行号的有用消息。
与上述建议一样,您也可以使用调试器,并在代码离开函数末尾而不返回时自行监视。