代码: 全选
#include <stdio.h>
main()
{
int a,j=100;
a = ++j + ++j + ++j;
printf("%d",a);
}
TC的结果可以理解,但307就不能理解了 。
代码: 全选
#include <stdio.h>
main()
{
int a,j=100;
a = ++j + ++j + ++j;
printf("%d",a);
}
代码: 全选
movl $100, -8(%ebp)
addl $1, -8(%ebp)
addl $1, -8(%ebp)
movl -8(%ebp), %eax
addl -8(%ebp), %eax
addl $1, -8(%ebp)
addl -8(%ebp), %eax
正确!鉴定完毕!BigSnake.NET 写了:看上去是这样的 ..代码: 全选
movl $100, -8(%ebp) addl $1, -8(%ebp) addl $1, -8(%ebp) movl -8(%ebp), %eax addl -8(%ebp), %eax addl $1, -8(%ebp) addl -8(%ebp), %eax
先做前两个 ++ , 然后相加, 然后再做最后一个++, 再相加
++j -> j=101
++j -> j=102
j+j -> tmp = 204
++j -> j=103
tmp +j -> 307
这就是上吊时需要把绳子多往脖子上缠几圈,不然勒不死!写出这样的代码有什么意思?自己给自己找麻烦!tlhl28 写了:TC的结果是 309。GCC , g++ 和 VC++的结果是307。为什么?!代码: 全选
#include <stdio.h> main() { int a,j=100; a = ++j + ++j + ++j; printf("%d",a); }
TC的结果可以理解,但307就不能理解了 。