首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

i++++不合法,为什么++++i就合法?分不多了.解决方案

2012-03-05 
i++++不合法,为什么++++i就合法??分不多了...1i++++表示什么意思?2++++i表示什么意思?intmain(){inti0

i++++不合法,为什么++++i就合法??分不多了...
1>   i++++表示什么意思?
2>   ++++i表示什么意思?

int   main()
{
int   i   =   0   ;
cout   < <   ++++i   < <   endl   ;//   2
cout   < <   i++++   < <   endl   ;//   编译错误!
return   0   ;
}


不是死抠语法,但是想知道什么意思,什么运算顺序。


[解决办法]
foolmouse123() ( ) 信誉:100 Blog 加为好友 2007-05-05 11:35:58 得分: 0


直接建议你不要去管这些东东了,真正的商业代码里没有一行这样的代码。


//这也是考你对C++体系的熟悉,而不是一句 “真正的商业代码里没有一行这样的代码。”就跳过的

1> 在2> 中 那个是“第一个i++”,结合顺序是自右向左还是自左向右?
//这个问题不大, 视编译器而定,因为都是同级的嘛

2> 如果是自右向左,(++)(++)i,可以解释,但是i(++)(++)怎么解释?
//可以这样看啊。 ++(++i),

3> 为什么++设计的允许两个前向++,但是就不允许后向++呢?
注意,后加返回的是临时的无名对象
比如我们写个函数
int get(){}
调用时可以
int a=get();
也可以空放在那里
get();//但这是有个值返回的,过了;号就被分解掉

i++;你把他看成get()产生一个无名对象值,接着对这个无名对象再++,(i++)++,有意义吗?


[解决办法]
左右值的问题
i++得到是右值,右值是常量,不能做运算。
++i得到是左值,左值是变量,可以做运算。

道理很简单,怎么这么多争论呢?
[解决办法]
++的结合性为右结合,所以++++i合法,而i++++不合法,如果改为(i++)++就合法了
建议你不要去管这些了,在日常工作中不会用到这样的,自己写代码是为了工作,不是为了消耗时间!!

热点排行