其实这个问题不用看完整的程式码也没关系,以防万一还是附上
想问的是例如这种运算式:
c=sub1(a,&b)+sub2(&a,b);
(完整程式码)
https://ideone.com/QYBURk
已知sub1.2两只副程式若以"传址"方式进行传递的部分,皆会改动到原本的变量内容
(因为这两个副程式刚好是相对的,先假设这两个副程式进去后的处理差很多)
单以这条式子来看,手动追踪的话是从 左边算到右边
但又有一种情况是:
printf("%d\n%d\n%d\n%d\n",a+b+c+d,(b*=a),(a+=d),(d++));
(完整程式码)
https://ideone.com/jVvX5m
却又必须从右边算回左边... 说是实务上很多编译器会 从右往左 进行解析
现在观念有些混淆了,究竟看到一条运算式,在什么情况下才会从右到左
或从左到右呢? 有较明确的判断方式吗?
谢谢!