求高手解释,在++运算中, int j =1;j= (j++)+(++j); printf("%d",j);输出结果为什么为5
答案:3 悬赏:0 手机版
解决时间 2021-02-25 00:08
- 提问者网友:眉目添风霜
- 2021-02-24 03:55
求高手解释,在++运算中, int j =1;j= (j++)+(++j); printf("%d",j);输出结果为什么为5
最佳答案
- 五星知识达人网友:毛毛
- 2021-02-24 04:09
这种容易引起歧义的语句最好避免使用。本身这种语句,在不同的编译器下的定义不同。
下面是在Dev C++下的运行结果:
下面是在Dev C++下的运行结果:
全部回答
- 1楼网友:拜訪者
- 2021-02-24 05:42
因为++这个自增运算符分两类,一个是前置,一个是后置,比如 a = b++;和a = ++b;两个实现的鲜果都是将b赋值给a,但是前置的++b会先运算b = b + 1;然后再试a = b;而后置的b++会先运算a = b;再进行b的自增b = b + 1;所以,如果b = 3的话,a = b++;a = 3; b = 4;但是a = ++b;的话a和b都为4
而关于你后面问的int j =1,a=0;a= (j++)+(++j); printf("%d",a);为什么a没自增的问题,因为自增的是j,不是a。。。
而关于你后面问的int j =1,a=0;a= (j++)+(++j); printf("%d",a);为什么a没自增的问题,因为自增的是j,不是a。。。
- 2楼网友:煞尾
- 2021-02-24 04:22
j++是先运算后自增,++j是先自增后运算。
int j =1;j= (j++)+(++j); printf("%d",j);中j++的自增运算暂时会被搁置,此时 j 还是1;但是++j会提前自增使 j 变成2。因为两边括号里的 j 是同一个变量,所以左右括号里的 j 都是 2 结果相加为4,将4又赋值给了 j ,j 变成了4。最后运行之前被搁置的 j++,也就是4+1=5。
int j =1,a=0;a= (j++)+(++j); printf("%d",a); a没有自增追问为什么最后又运行之前被搁置的 j++,和++算式符号的函数原型有关吗
int j =1;j= (j++)+(++j); printf("%d",j);中j++的自增运算暂时会被搁置,此时 j 还是1;但是++j会提前自增使 j 变成2。因为两边括号里的 j 是同一个变量,所以左右括号里的 j 都是 2 结果相加为4,将4又赋值给了 j ,j 变成了4。最后运行之前被搁置的 j++,也就是4+1=5。
int j =1,a=0;a= (j++)+(++j); printf("%d",a); a没有自增追问为什么最后又运行之前被搁置的 j++,和++算式符号的函数原型有关吗
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯