C语言自增问题!

发布时间:2024-05-11 05:18 发布:上海旅游网

问题描述:

1、k=(i++)+(i++)+(i++),k=9,i=6
2、k=(i++)+(++i)+(i++),k=12,i=6
3、k=(++i)+(++i)+(i++),k=15,i=6
4、k=(++i)+(++i)+(++i),k=18,i=6
i的初值是3!k=(i++)+(i++)+(i++);k=?,i=?
k=(i++)+(++i)+(i++),k=?,i=?
k=(++i)+(++i)+(i++),k=1?,i=?
k=(++i)+(++i)+(++i),k=?,i=?

问题解答:

1、k=(i++)+(i++)+(i++),k=9,i=6
2、k=(i++)+(++i)+(i++),k=12,i=6
3、k=(++i)+(++i)+(i++),k=15,i=6
4、k=(++i)+(++i)+(++i),k=18,i=6

我已经用c实现:
#include <iostream>
int main()
{
int i(3),k;
k=(i++)+(i++)+(i++);
//k=(i++)+(++i)+(i++);
//k=(++i)+(++i)+(i++);
//k=(++i)+(++i)+(++i);
std::cout<<"i="<<i<<" k="<<k<<std::endl;
return 0;
}
结果为:
output:
1、i=6 k=9
2、i=6 k=12
3、i=6 k=15
4、i=6 k=18
结果分析:
首先看第一个: k=(i++)+(i++)+(i++);
执行过程:首先 k=i+i+i;得到k=9
然后执行:i++,i++,i++,得到i=6
再看第二个:k=(i++)+(++i)+(i++);
执行过程: 首先:++i,后i为4;
然后执行:k=i+i+i,得到k=12,
然后执行i++,i++得到i=6
第三个:首先执行++i,++i,得到i=5
然后执行 k=i+i+i,得到k=15
然后再执行 i++,得到i=6
第四个:就不再啰嗦了,
这些跟优先级有关,并不是一个一个处理,而是整天处理的。

首先你这样的题目毫无意义,对于不同的编译器有不同的答案,对于从左到右还是从右到左的编译结果是不同的。
其次,如果你是程序员,你会写这样的代码吗?不会,明显不会,这样太费脑子了,自己都不懂,更别说看你程序的人了。你不会这么写,大家也不会,这样的问题就不存在了
再次:考试是不考这个的,没有意义。

1,k=18;i=6
2,k=20;i=7
3,k=23;i=8
4,k=24;i=9

1,k=18 i=9
2,k=21 i=9

什么东西啊
题目是什么啊?

热点新闻