自增运算符的问题

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

问题描述:

#include <stdio.h>
#include <cstdlib>
main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",i,j,p,q);
system("pause");
}
运行结果为:8,8,15,22
我实在Dev C++上运行的。
对于q等于22的结果不太理解。。
(++j)+(++j)+(++j)
第一次j=6,第二次j=7,第三次j=8,那么当j=8得时候前面的两个j的值应该为多少呢?如果前面也变成了8结果应该为24啊。。不太理解~请大家不吝赐教~

问题解答:

int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
++在前代表先自增再用值
++在后代表先用值在自增
我通过调试发现:
不管在DevC++还是VC++中:++在后完全遵循这个规律。++在前有点特别当小于等于两个数时遵循,超过两个时前两个遵循后面的递增。
例如:该题
假若:q=(++j)则 j=6,q=6;
q=(++j)+(++j);则j=7,q=14;
q=(++j)+(++j)+(++j);则j=8,q=22;
q=(++j)+(++j)+(++j)+(++j);则j=9,q=31;
...

呵呵,这答案每个编译器都有一点出入!

这样的题目除了考试外在实际应用中似乎用不上哦!

int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
++在前代表先自增再用值
++在后代表先用值在自增
按照这一原则
p = 5 + 5 + 5 = 15
p 的值变为8
q = 8 + 8 + 8 = 24
q的值变为8
所以输出应该为8 8 15 24不知道为什么楼主回输出那个值
用VC++试试看吧

我VC++试了 楼主对的 好奇怪,,,

热点新闻