当前位置: 代码迷 >> C语言 >> 关于C中的前++和后++
  详细解决方案

关于C中的前++和后++

热度:208   发布时间:2008-02-02 23:23:38.0
算了,楼主按他的机子理解吧,高手,看看偶的问题怎么样解决行吗?帖子里有,求π的问题?
----------------解决方案--------------------------------------------------------
还有,我不是这个版的版主,请不要称呼我版主
我受不起
----------------解决方案--------------------------------------------------------
问过一位高手,他是这样解释的,来与两位分享一下,多了解些知识。

这个表达式本身不安全,编译器优化的时候会出问题,无论什么编译器都可能出问题,因此一般在工程上禁止这种表达式出现。

  所以说,这些运算符知道原因就行了,编程的时候尽量少出现。

以上不是我说的,是一位朋友解释的,二位也要和我一样记在心中哦~
----------------解决方案--------------------------------------------------------
张了一些本事
----------------解决方案--------------------------------------------------------
我的经验,对于c中的自增、自减运算可以抽象成函数表达式为:
先自加、自减
f(++a);和
f(--a);
可以看作
b=++a;
f(b);和
b=--a;
f(b);
后自加、自减
f(a++);和
f(a--);
可以看作
f(a);
a=a+1;和
f(a);
a=a-1;
其中,对于多次自加自减运算,由于运算优先级高于四则运算,可以看作逗号运算表达式,取最后的结果。
----------------解决方案--------------------------------------------------------
自己看老潭的c语言书 那里有这个++--问题  就第2版的 看的仔细点 编译器不同结果也不一样的
----------------解决方案--------------------------------------------------------
反汇编exe文件,看代码!
----------------解决方案--------------------------------------------------------
b=++a*++a*++a  
相当于a自加三次后再相乘  也就是6的三次方  肯定是216呀
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]ryophoenix[/un] 在 2008-2-4 15:35 的发言:[/bo]

b=++a*++a*++a  
相当于a自加三次后再相乘  也就是6的三次方  肯定是216呀

wrong answer
----------------解决方案--------------------------------------------------------
菜鸭,我对你很失望,原本以为你懂了。
http://bbs.bccn.net/viewthread.php?tid=198540&page=4#pid1187077
32楼
C标准规定++a先加一后取值,a++先取值后加一。在表达式中嵌入这种自增表达式时何时加一标准没有规定,对于标注没有规定的行为编译器可以作出自己的解释,所以不同的编译器会有不同的结果。

我那句话没有说错,有的菜鸟是长不大的。有的菜鸟只会在论坛里制造论战。
----------------解决方案--------------------------------------------------------
  相关解决方案