当前位置: 代码迷 >> C语言 >> [求助]结合性的问题
  详细解决方案

[求助]结合性的问题

热度:535   发布时间:2007-08-05 18:01:38.0
[求助]结合性的问题
PS:书上根本没写过自增自减与结合性的问题
问题如下
#include"stdio.h"
main()
{
int i=8;
printf("%d%d\n",i,i++);
}
结果为88
由此判断结合性由左向右
#include"stdio.h"
main()
{
int i=8;
printf("%d%d\n",i++,--i);
}
结果为77
由此判断为从右往左
在次暂时可以理解前缀的优先性大于后缀的
#include"stdio.h"
main()
{
int i=8;
printf("%d%d%d",++i,--i,++i);
}
结果989
貌似全为前缀的时候,结合性从右往左来
#include"stdio.h"
main()
{
int i=8;
printf("%d%d%d%d",--i,i--,++i,i++);
}
结果8998
汗,晕了。。。。。。。。。
#include"stdio.h"
main()
{
int i=8;
printf("%d%d%d",i++,i++,i++);
}
结果888
竟然没干活。。。。
#include"stdio.h"
main()
{
int i=8;
printf("%d%d%d",++i,++i,++i);
}
结果11109
很勤快,从右往左;
#include"stdio.h"
main()
int i=8;
printf("%d%d%d",++i,i--,++i);
}
结果1099
竟然是先算右边++i,然后左边++i与i--是同时的??
彻底找不到北,望高手们指点
搜索更多相关的解决方案: 结合  

----------------解决方案--------------------------------------------------------
我用的VC 以上全在一个编辑器中写的
----------------解决方案--------------------------------------------------------
#include"stdio.h"
main()
{
int i=8;
printf("%d%d\n",i,i++); /* printf()的运算顺序是从右向左.i++,++在后,表达式的值为8,i再自加值为9 */
<2><1>
}
结果为88


#include"stdio.h"
main()
{
int i=8;
printf("%d%d\n",i++,--i); /* --i,--在前,表达式的值为8-1=7,i的值为7,再算i++,++在后,表达式的值为7,i再自加*/
}
结果为77



水平有限,只能解释成这样

----------------解决方案--------------------------------------------------------
不是很明白
----------------解决方案--------------------------------------------------------
大家快来帮帮我5555555555我实在是快疯了
----------------解决方案--------------------------------------------------------
以下是引用gutouwu在2007-8-5 20:12:24的发言:
#include"stdio.h"
main()
{
int i=8;
printf("%d%d\n",i,i++); /* printf()的运算顺序是从右向左.i++,++在后,表达式的值为8,i再自加值为9 */
<2><1>
}
结果为88


#include"stdio.h"
main()
{
int i=8;
printf("%d%d\n",i++,--i); /* --i,--在前,表达式的值为8-1=7,i的值为7,再算i++,++在后,表达式的值为7,i再自加*/
}
结果为77



水平有限,只能解释成这样

就按你说的,第一个的结果应该是一个8一个9


----------------解决方案--------------------------------------------------------
看的少,解决的更少,关注中
----------------解决方案--------------------------------------------------------
以下是引用zsbliuzhen在2007-8-5 21:32:01的发言:

就按你说的,第一个的结果应该是一个8一个9

先输出两个8,输出语句完了之后,i的值才变为9,i++如果在一个语句中,就是这个语句结束之后,i的值才变
----------------解决方案--------------------------------------------------------
难道没个高手系统的解释下么?老是这么一句一句的。。。。
----------------解决方案--------------------------------------------------------
这个跟编译器有关 没必要讨论的

----------------解决方案--------------------------------------------------------

  相关解决方案