这个题是死循环吧
#include <stdio.h>main()
{
int a = -7;
while( a-- );
;
printf("%d", a);
} a值是-7 每次递减1
拿32位int型系统举例
当a变成 -2147483648的时候
再减1就变成了正的2147483647(为什么这么变就要补习二进制知识了)
然后还是递减1,当a变成0的时候条件不成立了
但是while条件里面的a还 - - 了,所以答案应该是-1
不是死循环,需要一点时间,耐心等等 人造人 发表于 2016-3-6 21:24
不是死循环,需要一点时间,耐心等等
怎么解释? 5: int a = -7;
0040D748 mov dword ptr ,0FFFFFFF9h
6: while( a-- );
0040D74F mov eax,dword ptr
0040D752 mov ecx,dword ptr
0040D755 sub ecx,1
0040D758 mov dword ptr ,ecx
0040D75B test eax,eax
0040D75D je main+31h (0040d761)
0040D75F jmp main+1Fh (0040d74f)
7: ;
8: printf("%d", a);
machimilk 发表于 2016-3-7 01:03
a值是-7 每次递减1
拿32位int型系统举例
当a变成 -2147483648的时候
多谢!!! 9528 发表于 2016-3-7 00:48
5: int a = -7;
0040D748 mov dword ptr ,0FFFFFFF9h
6: while( ...
虽然看不懂,但还是谢谢你了!!!汇编还没学 楼上正解 5楼正解 补码知识 学习了...
为什么5楼没了
页:
[1]