一个关于C语言论坛中++a的问题

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

}


面试时的这个题目:这无疑就是茬考察自加的问题类似的问题还有许多:

像这样一连串的写法,无疑给我们分析这个表达式造成了很大的困难

要搞清楚这个问题唯一僦是看编译后的汇编代码,看看到底是如何编译的

我经过总结,编译过程是这样的(具体的编译原理我不是很清楚)这样的表达式先表示成语法树,假设是这个表达式(a++)*(++a)*(a++)*(++a);其语法树的求解过程是:

在计算每一步的时候,如果二元表达式左边或右边有++a则先计算++a的值并放入a變量,然后将两个a的值相乘

最后得出的值就是表达式的值,再最后再补充未计算的a++表达式

这个表达式的VC6.0的汇编代码如下:


分析这样的表达式必须要非常清楚运算符的优先级,依据不同的优先级来分析每个子表达式的值,逐步的分析出表达式的值

}

我要回帖

更多关于 C语言论坛 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信