打印出奇怪的符号而不是字符串

时间:2017-02-07 04:06:35

标签: c++ string

我尝试制作这个简单的程序来模拟在游戏中打开一个箱子。但是,当我运行它时(首先输入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);.   }}}

1 个答案:

答案 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");
    }
}

这将在大多数环境中停止调试器中的程序,并打印包含默认情况下的行号的有用消息。

与上述建议一样,您也可以使用调试器,并在代码离开函数末尾而不返回时自行监视。