#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是怎么变化的?
C++程序中关于k++与++k的问题
答案:4 悬赏:80 手机版
解决时间 2021-07-28 23:28
- 提问者网友:孤山下
- 2021-07-28 07:17
最佳答案
- 五星知识达人网友:醉吻情书
- 2021-07-28 08:13
举例说明
k=5
那么
cout<<k++;的时候屏幕显示5,这句运行后,k是6
cout<<++k;的时候屏幕显示6,遇到++k,马上自增
全部回答
- 1楼网友:鸽屿
- 2021-07-28 11:29
同学你蛮聪明的嘛!这么种问题也提的出来。++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再自加。
第四个你自己应该会分析了。
- 2楼网友:洎扰庸人
- 2021-07-28 10:22
你这些代码的结果全都是未定义的
c++不能保证这些函数的参数的计算顺序,你在一个函数的参数里面改变k值两次,哪个先做完全不确定。不要这样写程序,这样写是会出问题的。
- 3楼网友:梦中风几里
- 2021-07-28 09:22
k++是先做+1的运算,然后赋值
++k是先赋值,然后做+1的运算
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯