永发信息网

C++程序中关于k++与++k的问题

答案:4  悬赏:80  手机版
解决时间 2021-07-28 23:28
#include<iostream.h>
int fun(int x,int y)
{ return x*y;}
void main()
{ int k=5;cout<<fun(k++,++k)<<endl;
cout<<k<<endl;}
结果是 36 7
#include<iostream.h>
int fun(int x,int y)
{ return x*y;}
void main()
{ int k=5;cout<<fun(++k,++k)<<endl;
cout<<k<<endl;}
结果是 42 7
#include<iostream.h>
int fun(int x,int y)
{ return x*y;}
void main()
{ int k=5;cout<<fun(++k,k++)<<endl;
cout<<k<<endl;}
结果是 30 7
#include<iostream.h>
int fun(int x,int y)
{ return x*y;}
void main()
{ int k=5;cout<<fun(k++,k++)<<endl;
cout<<k<<endl;}
结果是 25 7
这4个程序中k是怎么变化的?
最佳答案

举例说明


k=5


那么


cout<<k++;的时候屏幕显示5,这句运行后,k是6


cout<<++k;的时候屏幕显示6,遇到++k,马上自增

全部回答

同学你蛮聪明的嘛!这么种问题也提的出来。++k表示执行语句前k先自加,k++表示操作语句完后k自加。(函数的全部参数传递完相当于一个语句)

第一个程序:先将右边的参数++k的值传给fun,再将左边的参数k=6传给fan。然后会k在自加。所以fun得到的参数是(6,6)最后k等于7。这里要注意的是:参数传递不是同时的,是先右再左的规律。

同理第二过程序:右参数自加后k=6传给fun然后k再自加等于7传给fun的左参数。

第三个程序:先将k=5传给fun的右参数,然后k自加将自加的结果传给fun的左参数。k再自加。

第四个你自己应该会分析了。

你这些代码的结果全都是未定义的

c++不能保证这些函数的参数的计算顺序,你在一个函数的参数里面改变k值两次,哪个先做完全不确定。不要这样写程序,这样写是会出问题的。

k++是先做+1的运算,然后赋值

++k是先赋值,然后做+1的运算

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
爱走到了尽头该怎么办?
扬州大学哪个校区最漂亮?
浙江峰会什么时候开始,浙江省初中历史与社会
在新加坡如何购买廉价航空公司的机票?
财经法规是实行倒扣分制度的吗?
怎么才能让自己的QQ等级升到九个太阳?
求个QQ头像,
唉,谁帮我解决?
襄城县许昌德尚悦目视力养护中心(襄城县旗舰
请问,我下载的ISO是222M,但放到U盘里却是1.
CF体验服4.6迅雷下载地址
求陈胜屿(虚假的真)歌词?
ps2忍者神龟的一个问题
dnf魔道连招
龙沙区齐齐哈尔波蒂甜品咖啡这个地址在什么地
推荐资讯
电灯泡是把电能转化成了什么形式的能
常州地板哪卖的便宜 详细地址
有什么好听的歌给我介绍介绍吧....
硚口区武汉联奥羽毛球馆地址在哪里啊
梦见黄色的船了请帮我解梦吧
无语------
帮我给狗狗想个名字,是腊肠狗!要可爱点的名
Q斗是什么东西呀?怎么用不起呀?
我需要缩写《三国演义》第12回合,“曹操大战
成都动漫城
帮忙推荐一款洗面奶和乳霜吧,哪种洗面奶温和
视频什么时候开
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?