本帖最后由 ly110193 于 2012-9-23 09:27 编辑
附原题
#include <stdio.h>
main()
{ int a,b;
a=5;
b=++a*--a;
printf("%d\n",b);
}
求结果为____(答案b为25 )
【查看更多内容请登录哈】
LZ
b=++a*--a;
b = (++a) * (--a) ;
b = (表达式1) * (表达式2) ;
代码肯定先执行 表达式1和表达式2 的乘法运算
但是先计算 表达式1的值还是表达式2的值 则取决于编译器
废话就不多说 你自己看到起整就是了
这种编程风格是适合于卖弄,对于提高程序的健壮性,可读性和运行效率没有一点帮助。。 不同编译器优化代码后确实不尽相同,如果想明白具体怎么操作,可以看一下汇编代码。或者寄存器里具体数值。真蛋疼
秋声赋 发表于 2012-9-22 20:15 【链接登录后可见】
看到这种题就烦
明明是一个用来方便编程的东西
居然被天朝的老师 弄得和奥数一样麻烦
哦 頓悟了呢 確實挺煩的
ly110193 发表于 2012-9-22 14:20 【链接登录后可见】
其實 加不加不影響的 試過了 ++--的優先級高於等關係運算符
你换宝蓝的编译器试试
看到这种题就烦
明明是一个用来方便编程的东西
居然被天朝的老师 弄得和奥数一样麻烦
你把握那一点就行了 ++a是先加后用 a++是先用后加
我看你的问题应该是倒数第二个不能理解
他那个a--之后 a的值并没有变化就执行++a 算出来a的值 是6 再算a*a=6*6=36 然后再是算
【查看更多内容请登录哈】
xushine 发表于 2012-9-22 11:08 【链接登录后可见】
建议规范代码 加上括号
其實 加不加不影響的 試過了 ++--的優先級高於等關係運算符
xushine 发表于 2012-9-22 11:08 【链接登录后可见】
建议规范代码 加上括号
其實 加不加不影響的 試過了 ++--的優先級高於等關係運算符
加群118213378问吧。
那群傲娇货明明知道答案就是懒得上论坛来回答
问里面的那两个管理员E和X
建议规范代码 加上括号