是什么导致了这种奇怪的行为?

hsh*_*hab 1 c++

我试图解决这个简单的问题http://codeforces.com/problemset/problem/158/B ,我想出了解决它的代码:

int main() {
int n,x,sum;
cin >> n;
for (int i = 0; i < n; i++) {
    cin >> x; sum += x;
}

for (int j = 1; j <= sum; j++) {
    double q = (sum*1.0) / j;
    if (q <= 4*1.0) {
        cout << j;
        break;
    }
}
return 0;
Run Code Online (Sandbox Code Playgroud)

无论这个解决方案的正确性如何,我注意到没有任何东西被打印但是如果我改变了这条线

cout << j;
Run Code Online (Sandbox Code Playgroud)

对此:

cout << ' ' << j;
Run Code Online (Sandbox Code Playgroud)

它打印答案(当然在空格之后).

我在ideone.com上测试了我的代码(这是我的解决方案的实际链接http://ideone.com/wldwvy),行为如上所述,但是当我在这个网站上测试它时,http://www.compileonline .com/compile_cpp0x_online.php输出很好(不必包含空格).

完全尴尬的是当我试图在一个非常小的测试用例上提交我的解决方案时,它给了我(超出时间限制判决)的代码.

为什么会这样?

use*_*ica 5

您没有初始化sum,因此sum += x未定义的行为.你的代码可以做任何事情; 编译器不需要检测问题或做任何明智的事情.