关于++的问题

zjlsct 2004-08-06 05:50:16
今天在csdn看到一篇文章
里面有代码
int main()
{
int ix, iy,a,b,c;
iy = 1;
ix = ( iy++ ) + ( iy++ ) + ( iy++ );
printf( "this is %d\n", ix );


iy = 1;
ix = ( ++iy ) + ( iy++ ) + ( iy++ );
printf( "this is %d\n", ix );


iy = 1;
ix = ( ++iy ) + ( ++iy ) + ( iy++ ) ;
printf( "this is %d %d\n", ix);

iy = 1;
ix = ( ++iy ) + ( ++iy ) + (++iy ) ;
printf( "this is %d %d \n", ix);
return 0;
}

在VC6.0下运行结果为
3
6
9
10

无法理解,请各位解答
...全文
90 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfwater 2004-08-06
  • 打赏
  • 举报
回复
按照教材上的解释,应该是3,6,9,12。
但编译器不同结果很可能就不同,所以还是不理会的好啊。
hongweijin 2004-08-06
  • 打赏
  • 举报
回复
这些帖子是很多啊!
wfwater 2004-08-06
  • 打赏
  • 举报
回复
我在vc6.0下和楼主得到的结果相同,郁闷
LLnju 2004-08-06
  • 打赏
  • 举报
回复
好无聊的家伙,你问问他在几个平台,几个编译器上试过
wansong 2004-08-06
  • 打赏
  • 举报
回复
前面写错了,执行后y都是4,笔误
bm1408 2004-08-06
  • 打赏
  • 举报
回复
这样说没有什么意义!

不同的平台下有不同的结果!
我们理解只要按照标准想就行了!
wansong 2004-08-06
  • 打赏
  • 举报
回复
你的结果都有错,应该是3,6,9,12
+号运算的结合方式是从右向左的
第1个:在整个语句里,y++了三次,y在这条语句执行时是1,执行后是3,故ix=1+1+1=3;
第2个:在整个语句里,++y了一次,y++了二次,y在这条语句执行时是2,执行后是3,故ix=2+2+2=6;
第3个:在整个语句里,++y了二次,y++了三次,y在这条语句执行时是3,执行后是3,故ix=3+3+3=9;
第4个:在整个语句里,++y了三次,y在这条语句执行时是1,执行后是4,故ix=4+4+4=12;
long111 2004-08-06
  • 打赏
  • 举报
回复
这是有关操作符的运算顺序问题,你把++看成操作符,再看看操作符的运算顺序就可以了
zjlsct 2004-08-06
  • 打赏
  • 举报
回复
还有倒数第二个
zjlsct 2004-08-06
  • 打赏
  • 举报
回复
turbo c++ 3
的运行结果是
3
6
9
9

拜托,前面两个用脚指头都能明白
可最后一个你依次类推看看,告诉我为什么是10!
jimmyzheng173 2004-08-06
  • 打赏
  • 举报
回复
ix = ( iy++ ) + ( iy++ ) + ( iy++ ); 先算 iy + iy + iy 结果为3 后 iy自加三次
ix = ( ++iy ) + ( iy++ ) + ( iy++ );先 ++iy 后 iy 等于2 然后 ()2+2 +2 结果等于6 然后iy 自加 2次
依次类推

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧