4个回答
展开全部
计算顺序确实是:c=(--a)+(--a)+(a++);
以a=10为例:
第一个(--a)之后,a=9,c=9;
第二个(--a)之后,a=8,c=9+8=17;
最后加上(a++),先算c=17+a=25,a再自加,所以a=9
以a=10为例:
第一个(--a)之后,a=9,c=9;
第二个(--a)之后,a=8,c=9+8=17;
最后加上(a++),先算c=17+a=25,a再自加,所以a=9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
5: c=--a+ --a+a++;
0041095F mov eax,dword ptr [ebp-8]
00410962 sub eax,1
00410965 mov dword ptr [ebp-8],eax
00410968 mov ecx,dword ptr [ebp-8]
0041096B sub ecx,1
0041096E mov dword ptr [ebp-8],ecx
00410971 mov edx,dword ptr [ebp-8]
00410974 add edx,dword ptr [ebp-8]
00410977 add edx,dword ptr [ebp-8]
0041097A mov dword ptr [ebp-4],edx
0041097D mov eax,dword ptr [ebp-8]
00410980 add eax,1
00410983 mov dword ptr [ebp-8],eax
这是我用VC6.0生成的对应汇编代码.
可以看到计算顺序是
先计算一个--a
再计算另一个--a,
再计算一个加法
再计算另一个加法
最后计算a++.
这样就相当于
c = 3 * ( a - 2 );
a = a - 1;
0041095F mov eax,dword ptr [ebp-8]
00410962 sub eax,1
00410965 mov dword ptr [ebp-8],eax
00410968 mov ecx,dword ptr [ebp-8]
0041096B sub ecx,1
0041096E mov dword ptr [ebp-8],ecx
00410971 mov edx,dword ptr [ebp-8]
00410974 add edx,dword ptr [ebp-8]
00410977 add edx,dword ptr [ebp-8]
0041097A mov dword ptr [ebp-4],edx
0041097D mov eax,dword ptr [ebp-8]
00410980 add eax,1
00410983 mov dword ptr [ebp-8],eax
这是我用VC6.0生成的对应汇编代码.
可以看到计算顺序是
先计算一个--a
再计算另一个--a,
再计算一个加法
再计算另一个加法
最后计算a++.
这样就相当于
c = 3 * ( a - 2 );
a = a - 1;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说实话,这样的题,除了在学校考试还有就是企业笔试里可能出现外。
任何实际开发中都是不会用这样的代码的。
因为:可读性太差,而团队开发,代码讲求可读性高。
所以,楼主不应该纠结于这种问题,当然基本的语法规则还是要懂。
c=(--a) + (--a) + (a++)
任何实际开发中都是不会用这样的代码的。
因为:可读性太差,而团队开发,代码讲求可读性高。
所以,楼主不应该纠结于这种问题,当然基本的语法规则还是要懂。
c=(--a) + (--a) + (a++)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是C的贪心算法。
形象的跟你说吧,VC编译的时候,从左到有,总是尽量多的接收符号能组成一个符号。关于贪心算法你可以查查相关资料。
C=(--a)+(--a)+a++
形象的跟你说吧,VC编译的时候,从左到有,总是尽量多的接收符号能组成一个符号。关于贪心算法你可以查查相关资料。
C=(--a)+(--a)+a++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询