gpt4 book ai didi

c++ - 即使只有主函数,在主函数外部声明变量也会更改输出

转载 作者:行者123 更新时间:2023-12-01 18:58:21 25 4
gpt4 key购买 nike

所以我一直在研究一个问题,这个想法偶然出现在我身上。当我在主函数外部声明变量时,程序可以正常工作,即它达到“友元是魔法”的 else 情况,但如果在内部声明该变量,则返回 Chris 而不是 Friendship 语句。

int mis, chr;
int main() {
int a, n, m;
cin >> a;
for (int i = 0; i < a; i++) {
//code here
}
if(mis > chr)
cout << "Mishka";
else if(chr > mis)
cout << "Chris";
else
cout << "Friendship is magic!^^";
}

我使用的输入使 chr 和 mi 的值相等,因此它应该评估 else 语句,但它只是停止在 else if 处。

最佳答案

能力越大(由 C++ 提供),责任也越大

未初始化的变量会带来未定义的行为

在全局范围内声明的变量为 initialized由编译器。但是,任何函数内部定义的变量(即具有 automatic storage )可能包含垃圾值(在程序的每次调用中可能不同)。我建议始终将变量初始化为某个值。

int main() 
{
int mis = 0, chr = 0;
// ...

return 0;
}

现在让我们开始您的计划:

When I declare a variable outside the main function, the program works correctly, that is it reaches the else case of "Friendship is magic"

发生这种情况是因为变量(您的 if 梯形图依赖的变量)被初始化为 0。由于两个变量具有相同的值 (0),因此 if 语句的 else 部分正在执行。

but if the variable is declared inside it returns Chris instead of Friendship statement.

这是未定义行为的完美示例。如果它们是在函数内部定义的,它们将保存一些垃圾值,并且可能不相等。因此,您所观察到的是未定义的行为,您可能会在不同的机器上甚至有时在同一台机器上得到不同的结果。

关于c++ - 即使只有主函数,在主函数外部声明变量也会更改输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61494119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com