c语言
请教下列代码运算为什么会等于27,而不是24.:sweat:#include<stdio.h>
#include<stdlib.h>
void main()
{
int i =8;
int y =(i--) + (++i) + (i++);
printf("%d,%d,%d,%d\n", y, i++, i--, ++i);
system("pause"); :shock: y=9+9+9
y=(++i)+(++i)=20
编译器问题 ...看看反汇编代码... 能知道编译器到底是怎么读取的 :mad: 先弄懂i++ 跟++i 的区别八 i++ 是先使用i的值然后在加一 ++i是先加1再使用i的值自减跟自加是一个道理的。 #include<stdio.h>
#include<stdlib.h>
void main()
{
int i = 8;
// int y = (i--) + (++i) + (i++);
printf("%d,%d,%d,%d\n", (i--) + (++i) + (i++), i++, i--, ++i);
}
这样输出的结果是30,8,9,10
纠结吗?
跳过吧
{:5_92:} #include<stdio.h>
#include<stdlib.h>
void main()
{
int i =8;
int y =(i--) + (++i) + (i++);
printf("%d,%d,%d,%d\n", y, i++, i--, i);//这回在测试得 27 9 9 9 理解了吗
system("pause");
}
先用++i的值进行运算 上边就是(9--)+ 9 +( 9++) 之后8+9+10=27
输出的y=27 i++,i--,++i
因为上边的i还是9 在先用++i的缘故 ++i=10 这部输出没有后续运算i++,i--不运算
上边三个都为 10,10,10 shaoguanfa 发表于 2015-1-21 20:41
这样输出的结果是30,8,9,10
纠结吗?
跳过吧
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i = 8;
// int y = (i--) + (++i) + (i++);
printf("%d,%d,%d,%d\n", (i--) + (++i) + (i++), i++, i--, ++i);
}
这一步 出的结果为30 9 9 9 你编译器有问题吧 #include<stdio.h>
#include<stdlib.h>
void main()
{
int i =8;
int y =(i--) + (++i) + (i++);
printf("%d,%d,%d,%d\n", y, i++, i--, i);//这回在测试得 27 9 9 9 理解了吗
system("pause");
}
先用++i的值进行运算 上边就是(9--)+ 9 +( 9++) 之后8+9+10=27//不好意思这里错了 是9+9+9
输出的y=27 i++,i--,++i
因为上边的i还是9 在先用++i的缘故 ++i=10 这部输出没有后续运算i++,i--不运算
上边三个都为 10,10,10 kklloo 发表于 2015-1-21 17:09
先弄懂i++ 跟++i 的区别八 i++ 是先使用i的值然后在加一 ++i是先加1再使用i的值自减跟自加是一个道 ...
y=(i--)+(++i)+(i++);
其中,(i--)=8 ; 之后,i值为7
,(++i)=8;之后,i值为8
,(i++)=8;
上面y 应该等于 24呀!??? love105827 发表于 2015-1-21 21:56
#include
#include
void main()
小甲鱼说的很清楚了啊,编译器的问题,我们在实际使用的时候一般只会使用一个i++或者++i 所以不必纠结与这个问题了 上面的输出结果是我的编译器的问题到了你那不一样了很正常的啊编译器不同的原因{:5_91:} #include<stdio.h>
#include<stdlib.h>
void main()
{
int i = 8;
// int y = (i--) + (++i) + (i++);
printf("%d,%d,%d,%d\n", (i--) + (++i) + (i++), i++, i--, ++i);
}
同样的代码经测试
vc编译器输出是30,9,9,9
Qt下用gcc编译器 输出是27,8,9,10
关于前置++ 和后置++ 不用的编译器的实现是不一样的 谢谢,大家的帮助。{:1_1:} 我也学习一下 y=(i--)+(++i)+(i++)首先要明白,运算是自右向左运算的,即先(i++)+(++i)最后在加(i--);所以y=9+9+9。
还是不懂就看下面:
i=i++;// i=8;
i=++i;// i=9;
sum=i+i;//所以最后会等于9+9
最后再
i=i--; //i=9
sum=sum+i;
页:
[1]