请高手教教我下面这道c语言题吧,将感激不尽!!!

以下程序段得输出结果是()inty=7;printf("%d,%d,%d\n",++y,--y,y++);请高手给出详细的解答,不止要结果!!... 以下程序段得输出结果是()
int y=7;
printf("%d,%d,%d\n",++y,--y,y++);
请高手给出详细的解答,不止要结果!!
展开
 我来答
翔令j
2011-05-09 · TA获得超过422个赞
知道答主
回答量:147
采纳率:0%
帮助的人:0
展开全部
结果是:8,7,7
对于Y++与Y--这类的,自加与自减号在前的话,整个表达式的值为自加或自减后的值,如++Y
这整个的表达式的值为8,而对于单个的Y值,此后也变为8了,再进行--Y,表达的值为自减后的
值为7,对于Y本身变为7了,再进行Y++,对于自加与自减在后面的话,表达式的值将不变,仍为当前的值,7,而对于Y本身又变为8了。明白了吧,
例如:
int y=7;
printf("%d,%d,%d,%d,%d\n",++y,y,--y,y++,y);
结果为:8,8,7,7,8
更多追问追答
追问
可是我在vc6中运行的结果怎么是7,6,6,7,7啊?这到底是怎么回事啊?请高手明示!
追答
不好意思,是我弄错了,学C++都快忘C了,这是一个C的格式问题,与C++有区别;
C规定的,像这样的输出自加减赋值运算要从右往左的,即先进行y++ ---》--y --》++y
想这样的运算,结果还是8,7,7;对于我上面举的那个例子结果应该是8,7,7,7才对;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快乐0小孩
2011-05-09 · 超过33用户采纳过TA的回答
知道答主
回答量:131
采纳率:100%
帮助的人:88.3万
展开全部
7,6,7

函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的。

根据上面的原理,所以先运算的是第三个,因为是后++,所以先输出,所以第三个是7
再运算第二个,因为是先--,所以是先运算再输出,所以第二个是6
最后运算第一个,因为是先++,所以先运算再输出,所以第一个是7
更多追问追答
追问
可是对于下面程序结果为10,10,10,11  又怎样解释啊?请高手明示!谢谢!
int i=10;
printf("%d,%d,%d,%d",i--,i++,--i,++i);
追答
因为是从右边运算的,所以第四个++i  值为11,第三个--i 值为10,而后面两个都是后++ 后--所以值不变,都是10

参考资料: http://baike.baidu.com/view/1427555.html?tp=0_11

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
axg111
2011-05-09 · TA获得超过393个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:184万
展开全部
7,8,8
++y,是先输出y,后Y+1,所以输出7,同时y=8
--y,是先输出y,然后Y-1,所以输出8,同时y=7
y++,是先对y加1,即y=8,然后输出y,即输出8
所以结果为7,8,8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
保持这种忧郁先生
2011-05-09 · TA获得超过266个赞
知道小有建树答主
回答量:471
采纳率:37%
帮助的人:144万
展开全部
不知道对不对,如果是从左向右
那么 ++y 输出 8 再然y的值变成8 再--y 输出7 ,y值为7,最后y++ 输出7 y变成8
结果是 8, 7, 7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
析青文U7
2011-05-09 · TA获得超过1719个赞
知道小有建树答主
回答量:695
采纳率:0%
帮助的人:334万
展开全部
8,7,7,
++y的意思是变量使用前自增(先加1 ,变为8 ,在使用,即打印)
--y的意思是变量使用前减增
y++的意思是变量使用后自增
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式