在C语言中,int a=5,b; b=++a*--a;b的结果为多少?

 我来答
henfengduandie
2011-03-24 · TA获得超过653个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:211万
展开全部
答案:25

从下面的代码可以看出,事实也是++,--都比*优先级别高,实际执行a先自加1,为6,再自减1,为5,在经行乘法运算
测试代码
int main()
{
int a=5,b; b=++a*--a;
printf("%d\n", b);
}

汇编代码
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $36, %esp
movl $5, -12(%ebp)
addl $1, -12(%ebp)
subl $1, -12(%ebp)
movl -12(%ebp), %eax
imull -12(%ebp), %eax
movl %eax, -8(%ebp)
movl -8(%ebp), %eax
movl %eax, 4(%esp)
movl $.LC0, (%esp)
call printf
addl $36, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (GNU) 4.1.2 20070502 (Red Hat 4.1.2-12)"
.section .note.GNU-stack,"",@progbits
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友935068958
2011-03-24 · TA获得超过597个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:135万
展开全部
其实这种题要看是什么软件编译运行的 在VC中b=25 我运行了的 ++ --的优先级要比*要高 要是自己以后走上社会要编程最好避免这种语句加2个括号啥事都解决了
追问
加上括号呢?
追答
还是25
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sharp_blue
2011-03-24 · 超过16用户采纳过TA的回答
知道答主
回答量:122
采纳率:0%
帮助的人:37万
展开全部
编译平台不同结果就不同。这种有歧义的代码是应该避免的,不宜维护,不宜读写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-24
展开全部
跟C编译器的实现有关,有可能是24 也有可能是30 这种代码是应该被禁止使用的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leong92232
2011-03-24 · TA获得超过614个赞
知道小有建树答主
回答量:612
采纳率:0%
帮助的人:357万
展开全部
a=5;
b=++a[6]*--a[5]
=30
追问
答案25
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式