这个程序的输出结果是多少?

scalewing2005 2005-10-23 07:25:27
大家帮忙看一下:
#include<iostream>
using namespace std;
int k;
int fun()
{
return k++;
}
int main()
{
cout<<fun()<<" "<<fun();
}
...全文
420 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
PMsg 2005-10-24
  • 打赏
  • 举报
回复
编辑器相关的,看参数传递方向
codearts 2005-10-24
  • 打赏
  • 举报
回复
俺来总结:

1.全局变量,编译器自动初始化
2.参数是从右向左传递的(也可能从左到右),跟编译器相关
wanguodu 2005-10-24
  • 打赏
  • 举报
回复
多谢cnjsnt_s(风天舞)和 xiaocai0001(萧筱雨)两位DX批评指正。
wanguodu 2005-10-24
  • 打赏
  • 举报
回复
理解倒是没错,是写漏了两个字“全局(数据)”并且今天才发现。^_^
cnjsnt_s 2005-10-24
  • 打赏
  • 举报
回复
楼上的,书上说的是全局变量啊,而你说的是所有的啊,是你理解错了吧!!
wanguodu 2005-10-24
  • 打赏
  • 举报
回复
to xiaocai0001(萧筱雨) :
如果你承认<<c++ primier>> 3rd edition,这本书是遵循标准的话,那你可以在其中文版(潘爱民译)的p.331的第4行找到这样的一段话:

在全局域中定义的对象如果没有指定显式的初始值则该存储区被初始化为0 因此
下面两个定义中var1 和var2 有相同的初始值0
int var1 = 0;
int var2;

英文原版中这段话相应的位置在p.392:
An object defined in global scope without an explicit initializer is guaranteed to have its storage initialized
to 0. Thus, in the following two definitions, both var1 and var2 have an initial value of 0:
int var1 = 0;
int var2;
cxyol 2005-10-23
  • 打赏
  • 举报
回复
全局的变量 编译器自动为0
wzjall 2005-10-23
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
int k;
int fun()
{
return k++;
}
int main()
{
int x=fun() ;
int y=fun();cout<<x<<" "<<y;
}
这样输出为0 1;
应该是从左到右吧!至于cout<<fun()<<" "<<fun();输出为1 0就不知道是什么原因啦,下次问问老师去
xiaocai0001 2005-10-23
  • 打赏
  • 举报
回复
回复人: wanguodu(足文字D) ( ) 信誉:100 2005-10-23 21:09:00 得分: 0


C/C++标准都规定:程序中所有未初始化数据,编译器要把它们全部初始化为0。


--------------------------------------------
什么时候的标准???
aaa6818162 2005-10-23
  • 打赏
  • 举报
回复
10
你还少了return
wanguodu 2005-10-23
  • 打赏
  • 举报
回复
C/C++标准都规定:程序中所有未初始化数据,编译器要把它们全部初始化为0。
xiaocai0001 2005-10-23
  • 打赏
  • 举报
回复
k是全局变量, 系统会自动初始化为0的.
cdo 2005-10-23
  • 打赏
  • 举报
回复
运行后得到:1 0

可是为什么K没有初始化,却自动附值成0了呢?
steel007 2005-10-23
  • 打赏
  • 举报
回复
这种事情,完全是编译器相关的,没确定答案。
gamelearner 2005-10-23
  • 打赏
  • 举报
回复
参数是从右向左传递的。
cout<<fun()<<" "<<fun();
县调用后面一个fun(),在调用前面那个fun()
elangqzy 2005-10-23
  • 打赏
  • 举报
回复
2
fiftymetre 2005-10-23
  • 打赏
  • 举报
回复
认同楼上的
scalewing2005 2005-10-23
  • 打赏
  • 举报
回复
那最后k等于多少?
v41dugu 2005-10-23
  • 打赏
  • 举报
回复
又是这种题。。。编译器不同结果有可能不同
JohnTitor 2005-10-23
  • 打赏
  • 举报
回复
从右到左的调用顺序把
加载更多回复(2)

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧