c语言自增自减

发布时间:2024-05-21 01:53 发布:上海旅游网

问题描述:

main()
{int x=16,y;
printf("x=%d\n",x);
printf("x=%d,y=%d\n",x,++x);
printf("x=%d,y=%d\n",x,x++);
请问,第2哥输出函数中,(x,++x)是不是先算++x,后算x,这样是不是叫自增是自右至减算的
答案是
16
17,17
18,17
我就是弄不懂为什么要先算++x后算x

问题解答:

不是

第二个之所以结果是x=17,y=17是输出函数的问题,

printf("x=%d,y=%d\n",x,++x);

先算x,再算x++;当他做完

x++时改变了x的值,结果要输出x的值时输出了17,并不是因为先算x++;

运算符自左向右或自右向左是指多个操作数的情况,如

+是自右向左运算的,a+b+c是先算b+c在将其结果与a相加,而不是向我们平常那

样a+b在将其结果与c相加

很明显的一个例子是

int x=5;
cout<<x+(++x)<<endl;

结果是12,而不是11,因为它先运算了++x,此时x已经变为6了,若从左向右,

则结果是11

VC 6.0编译通过,答案是
16,
17,17
17,17

原因是,在prinf()函数中是从最后面的参数开始算起的。而且是从左到右全部计算完后再进行显示,所以 printf("x=%d,y=%d\n",x,++x); printf("x=%d,y=%d\n",x,x++); 的结果相同。

再出道多余的题目有给你:
int y=7
printf("%d",++y+(++y));

printf("%d",y+++y++);
的值是多少?

答案是18和14

这是C语言的规定
详细参考谭浩强的《C语言程序设计》。有说明
一般写程序时候不会用这样的方法的。不符合编程规范

答案应该时:
16
16,17
17,17
++x 表示先加后用
x++ 表示先用后加

热点新闻