阅读:2397回复:20
小题,各位猜一下编译完成后的输出结果,猜对有分,哈哈!
int i=1,j=2;
j=!j&&i++; 程序执行完上面语句后的i和j应该是多少啊? |
|
|
沙发#
发布于:2004-10-13 19:12
i = 1, j = 0
j = 0可以理解 但i=1却想不明白 |
|
板凳#
发布于:2004-10-13 19:16
编译后的汇编语言如下,看不懂的说
175: int i = 1, j = 2; 00401C9D mov dword ptr [ebp-8],1 00401CA4 mov dword ptr [ebp-0Ch],2 176: j = !j && i++; 00401CAB cmp dword ptr [ebp-0Ch],0 00401CAF jne CSasdsdDlg::OnButton1+4Ah (00401cca) 00401CB1 mov eax,dword ptr [ebp-8] 00401CB4 mov ecx,dword ptr [ebp-8] 00401CB7 add ecx,1 00401CBA mov dword ptr [ebp-8],ecx 00401CBD test eax,eax 00401CBF je CSasdsdDlg::OnButton1+4Ah (00401cca) 00401CC1 mov dword ptr [ebp-10h],1 00401CC8 jmp CSasdsdDlg::OnButton1+51h (00401cd1) 00401CCA mov dword ptr [ebp-10h],0 00401CD1 mov edx,dword ptr [ebp-10h] 00401CD4 mov dword ptr [ebp-0Ch],edx |
|
地板#
发布于:2004-10-13 21:36
j=0了,i++就不用执行了。
|
|
|
地下室#
发布于:2004-10-13 21:44
&&运算的时候,如果前面的已经是0了,后面的就会跳过
就是meteor说的 :D |
|
5楼#
发布于:2004-10-13 23:11
不懂
:cool: :cool: :cool: :cool: |
|
6楼#
发布于:2004-10-14 10:33
j=0了,i++就不用执行了。 高手啊!!! |
|
7楼#
发布于:2004-10-14 11:00
强!!!!
|
|
8楼#
发布于:2004-10-14 11:05
&&运算的时候,如果前面的已经是0了,后面的就会跳过 呵呵,这个解释比较合理,不过说不定这个跟编译器是有关系的。 |
|
9楼#
发布于:2004-10-14 11:06
晕 都是小菜啊
|
|
|
10楼#
发布于:2004-10-14 11:13
晕 都是小菜啊 大菜来了,兄弟们闪!~~~~~~ :D |
|
11楼#
发布于:2004-10-14 12:46
这是编译器优化造成的!
|
|
|
12楼#
发布于:2004-10-14 13:20
编译后的汇编语言如下,看不懂的说 这不是很清楚了吗? j!=0,i++就不执行了! |
|
13楼#
发布于:2004-10-14 13:24
以前看过一些用c编的变态程序,那些狂人们编的些程序简直就是天书,那个累啊!他们还组织这种比赛,ft!
|
|
14楼#
发布于:2004-10-14 13:44
以前看过一些用c编的变态程序,那些狂人们编的些程序简直就是天书,那个累啊!他们还组织这种比赛,ft! |
|
15楼#
发布于:2004-10-14 19:31
很简单的东西有什么不理解的呢??
if (a&& b && c &&d......) 只要第一个a为0 那么后面的不管如何总的结果都是0 的所以后面都不用做,直接属于条件不满足,同样 if (a|| b || c ||d......) 只要a为1后面的不管如何,最后结果都为非0,直接属于条件满足 道理简单的很 [编辑 - 10/14/04 by wowocock] |
|
|
16楼#
发布于:2004-10-14 19:33
[quote]&&运算的时候,如果前面的已经是0了,后面的就会跳过 呵呵,这个解释比较合理,不过说不定这个跟编译器是有关系的。 [/quote] 如果有编译器不那么做,那么他就是垃圾...... |
|
|
17楼#
发布于:2004-10-15 00:08
very 间单
|
|
|
18楼#
发布于:2004-10-15 07:35
直接用汇编就不会出现这种情况了。
|
|
19楼#
发布于:2004-10-15 07:53
[quote][quote]&&运算的时候,如果前面的已经是0了,后面的就会跳过 呵呵,这个解释比较合理,不过说不定这个跟编译器是有关系的。 [/quote] 如果有编译器不那么做,那么他就是垃圾...... [/quote] 问题是有的编译器先做左边,有的编译器先做右边。。。 所以这样的程序还是不写为好。。。 |
|
|
上一页
下一页