关于 C++全局变量:并未在函数中定义与全局变量同名的局部变量,并且变量值在函数中正常,但在 main 函数输出时就变成了 0

2015-03-09 21:05:21 +08:00
 spencerqiu
这是一个求最大子序列和的程序。

因为要输出起始位置和终止位置,就定义了 tail 和 head 两个全局变量,当时检测了一下 find 函数里的 tail 和 head 值,发现求到的是正确的。

但是在 main 函数里输出时,tail 和 head 就都变成了 0 ,搜索了一下,说是在函数中定义同名局部变量会出现这种情况.....但是我并没有啊......

https://gist.github.com/anonymous/64776fffef2123638ac4
1647 次点击
所在节点    问与答
2 条回复
ChanneW
2015-03-09 21:27:51 +08:00
先输出了,后 find 的
BGLL
2015-03-09 21:40:52 +08:00
cout流的执行顺序,C++未定义,取决于编译器....
大部分情况是反直觉的从左到右
这样
cout <<" "<<tail<<" "<<head<<find(a,k)<<endl;
就好了....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/175643

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX