在C语言中,int a=5,b; b=++a*--a;b的结果为多少?
7个回答
展开全部
答案: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
从下面的代码可以看出,事实也是++,--都比*优先级别高,实际执行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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实这种题要看是什么软件编译运行的 在VC中b=25 我运行了的 ++ --的优先级要比*要高 要是自己以后走上社会要编程最好避免这种语句加2个括号啥事都解决了
追问
加上括号呢?
追答
还是25
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译平台不同结果就不同。这种有歧义的代码是应该避免的,不宜维护,不宜读写。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-03-24
展开全部
跟C编译器的实现有关,有可能是24 也有可能是30 这种代码是应该被禁止使用的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=5;
b=++a[6]*--a[5]
=30
b=++a[6]*--a[5]
=30
追问
答案25
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询