C语言中应该避免构造复杂的前缀后缀表达式
2013-12-12 21:32
337 查看
一个例子:
结果是什么呢?
初学者半天想不明白;
半桶水的立刻答道:“哇,简单,1*10+2*20+3*30=140”
高手就考虑了C语言中算术运算符的结合顺序(从右到左),答案是“1*30+2*20+3*10=100”
当你用gcc编译后却惊奇的发现,答案是
60
C语言中,在一个算术运算过程中,i++会保持原值不变。但这是种不好的风格,最好的方法是在写程序过程中避免使用类似上面的复杂的前后缀表达式,尤其是与++运算结合在一起的表达式。
参考:http://blog.jobbole.com/53211/
#include <stdio.h> int main(){ int i = 0; int a[] = {10,20,30}; int r = 1 * a[i++] + 2 * a[i++] + 3 * a[i++]; printf("%d\n", r); return 0; }
结果是什么呢?
初学者半天想不明白;
半桶水的立刻答道:“哇,简单,1*10+2*20+3*30=140”
高手就考虑了C语言中算术运算符的结合顺序(从右到左),答案是“1*30+2*20+3*10=100”
当你用gcc编译后却惊奇的发现,答案是
60
C语言中,在一个算术运算过程中,i++会保持原值不变。但这是种不好的风格,最好的方法是在写程序过程中避免使用类似上面的复杂的前后缀表达式,尤其是与++运算结合在一起的表达式。
参考:http://blog.jobbole.com/53211/
相关文章推荐
- 复杂的正则表达式应该如何构造
- C语言利用前缀表达式实现复杂科学计算器
- 应该如何构造复杂的正则表达式
- 应该如何构造复杂的正则表达式
- 前缀、中缀、后缀表达式
- 中缀表达式;前缀表达式;后缀表达式;之间的转化
- 前缀中缀后缀表达式
- 表达式的前缀后缀问题
- 前缀、中缀、后缀表达式与二叉树的前序、中序、后序遍历
- 前缀、中缀、后缀表达式
- c语言中应该绝对避免一些的低级错误
- 前缀表达式,后缀表达式
- 前缀、中缀、后缀表达式
- C语言数据结构之利用栈将中缀表达式转换为后缀表达式
- 前缀、中缀、后缀表达式
- 前缀、中缀、后缀表达式
- 栈经典问题之前缀、中缀、后缀表达式
- 【数据结构】中缀表达式|后缀表达式|前缀表达式
- 前缀、中缀、后缀表达式
- 前缀、中缀、后缀表达式转换