C语言的问题,好简单

来源:百度知道 编辑:UC知道 时间:2024/05/19 15:09:44
题目:已知int i=3;j=(i++)+(++i)+(i++)则i,j的值分别是:
最好给出过程

i为6j为13
i=3 -- i++后不变 到++i时 i为5了。因为i++ 后加了1然后++i又加1到 i++ 时i还是5 然后在用到i时i又加了1所以你要打印或着是用它时为6,如果你永远不用,就是5那样也没意了。
i的值分析出来了j就很简单了。应该为13
j=3+5+5

这个问题还要注意的是,编译器的问题,不同的编译器有不同的算发。在C语言和C++、java 你可以去试一下。得到的答案不一样。
i是一样的,就是j不一样。
在c++里j为12。在java里j为13。所以我的思维是向着java的。
所以给你答案也是13。

i=6
j=13

首先是++i和i++的不同,++i是先自加再引用而i++是先引用再自加.第一个括号=3,第二个括号=5,第三个括号=4.最后的结果是12.

这个值不同的编译器算出来的结果是不一定的:
可能有两种情况:
1.编译器先算第两个i++;这时i=3,再算第二个++i,那么这个时候j=3+3+4=10;

2.编译器先算++i;这时i=4,再算其他的i++,那么这个时候j=4+4+4=12;

我们常用的vc就是用的第二种,事实上++i;i++能不用最好。

i=6 j=3+4+4 ++i是先加1在用于整个式子 而i++则是先用于整个式子再自加1 所以答案是这个

已知int i=3;j=(i++)+(++i)+(i++)则i,j的值分别是:
i++意思为先用后自加1
++i意思为先自加1后用
所以 j=3+5+5=13
4>>5>>6 最后i=6