C语言中应该防止构造复杂的前缀后缀表达式
发布时间:2021-12-11 15:42:24 所属栏目:教程 来源:互联网
导读:一个例子: #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(%dn, r); return 0; } 结果是什么呢? 初学者半天想不明白; 半桶水的立刻答道:哇,简单,1*10+2*20+3*30=140 高手就考虑
一个例子: #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("%dn", r); return 0; } 结果是什么呢? 初学者半天想不明白; 半桶水的立刻答道:“哇,简单,1*10+2*20+3*30=140” 高手就考虑了C语言中算术运算符的结合顺序(从右到左),答案是“1*30+2*20+3*10=100” 当你用gcc编译后却惊奇的发现,答案是 60 C语言中,在一个算术运算过程中,i++会保持原值不变。但这是种不好的风格,最好的方法是在写程序过程中避免使用类似上面的复杂的前后缀表达式,尤其是与++运算结合在一起的表达式。 ![]() (编辑:我爱制作网_潮州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |