Chinaunix首页 | 论坛 | 博客
  • 博客访问: 417627
  • 博文数量: 168
  • 博客积分: 320
  • 博客等级: 二等列兵
  • 技术积分: 955
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-21 08:40
个人简介

知足却不乏追求

文章分类

全部博文(168)

文章存档

2017年(1)

2016年(6)

2015年(36)

2014年(5)

2013年(6)

2012年(114)

分类: LINUX

2012-07-08 19:30:28

按楼主的逻辑下面这个结果应该为5,可为什么我测试的结果是6(gcc 4.4.1)?
x = 1;
y = (++x) + (++x);
求解释


  • 收起回复
  • 5楼
  • 2012-04-08 16:45
  •  |
  • : 我觉得y = (++x) + (++x);这个的本质还是y=x+x,但是x自增了两次,所以y=6了。
      2012-7-8 08:49
  • : y的结果要根据编译器的不通过,y的语句只能确定运算后x是自增了2,但是子语句什么时候自增1是不确定的,所以y的值各个编译器是不同的
      2012-7-8 10:56
  • : 因为++运算比++优先级高;所以是两个 ++x都运算完后再进行+运算,此时x为3(x总不可能有两个值2和3吧!!),和编译器没关系,结果应该都是6;
      2012-7-8 18:28
  • : 回复 :因为++运算比+优先级高;所以是两个 ++x都运算完后再进行+运算,此时x为3(x总不可能有两个值2和3吧!!),和编译器没关系,结果应该都是6; ————打错一个字,见谅!
      2012-7-8 18:28
  • : 因为++运算比+优先级高;所以是两个 ++x都运算完后再进行+运算,此时x为3(x总不可能有两个值2和3吧!!),和编译器没关系,结果应该都是6;回复 :
      2012-7-8 18:29
  • : 回复 :错
阅读(733) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

cu小白2012-07-09 12:07:20

嘿嘿弄明白了!!是我错了!!可以再这找到答案:http://learn.akae.cn/media/ch16s03.html