前置运算符和后置运算符的区别

C语言 码拜 8年前 (2016-04-02) 1976次浏览
(1)有的书上说:前置运算符通常要比后置运算符效率高,这是为什么?
(2)int a=4;
++a+=++a;
最终a的值为12,这是为什呢?
解决方案

4

你是再看C++的书吧,这里说的效率高是针对类对象而言的
不知道你有没有看到运算符重载,在运算符重载时,后置运算符函数是调用前置运算符函数实现的,所以后置的比前置的慢一些,至于为什么,你看到那儿就明白了
对于内置类型来说,他们是没有区别的,最后生成的汇编代码都是一样的(估计是inc)

2

(2)int a=4;
++a+=++a;
最终a的值为12,这是为什呢?
原因是这个属于未定义行为,编译器觉得怎么好怎么玩

8

未定义行为,编译器可能会优化也可以不优化,取决于编译器。
不同编译器会得出不同结果

1

前置运算符是先运算再赋值,后置运算符是先赋值再运算;

8

问题一:对于类对象来说,后置的++实际是返回该对象,然后调用前置的++运算符,所以效率没前置高,对于基本类型来说一样的
问题二:这是一个未定义行为,与顺序点有关

10

关于C,C++表达式求值顺序  http://bbs.csdn.net/topics/370153775

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明前置运算符和后置运算符的区别
喜欢 (0)
[1034331897@qq.com]
分享 (0)