编程题void main() { int i=5,j=5,p,q; p=(i++)+(i++)+(i++); q=(++j)+(++j)+(++j);
#include<stdio.h>voidmain(){inti=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);pr...
#include <stdio.h> void main() { int i=5,j=5,p,q; p=(i++)+(i++)+(i++); q=(++j)+(++j)+(++j); printf("q为什么等于22 而不是21??、
展开
3个回答
展开全部
18 movl $5, -16(%rbp) ;i = 5
19 movl $5, -12(%rbp) ;j = 5
20 movl -16(%rbp), %eax ;eax = i
21 addl -16(%rbp), %eax ;eax += i
22 addl -16(%rbp), %eax ;eax += i
23 movl %eax, -8(%rbp) ;p = eax
24 addl $1, -16(%rbp) ;i++
25 addl $1, -16(%rbp) ;i++
26 addl $1, -16(%rbp) ;i++
27 addl $1, -12(%rbp) ;++j
28 addl $1, -12(%rbp) ;++j
29 movl -12(%rbp), %eax ;eax = j
30 addl -12(%rbp), %eax ;eax += j
31 addl $1, -12(%rbp) ;++j
32 addl -12(%rbp), %eax ;eax += j
33 movl %eax, -4(%rbp) ;q = eax
希望你能明白,^_^
19 movl $5, -12(%rbp) ;j = 5
20 movl -16(%rbp), %eax ;eax = i
21 addl -16(%rbp), %eax ;eax += i
22 addl -16(%rbp), %eax ;eax += i
23 movl %eax, -8(%rbp) ;p = eax
24 addl $1, -16(%rbp) ;i++
25 addl $1, -16(%rbp) ;i++
26 addl $1, -16(%rbp) ;i++
27 addl $1, -12(%rbp) ;++j
28 addl $1, -12(%rbp) ;++j
29 movl -12(%rbp), %eax ;eax = j
30 addl -12(%rbp), %eax ;eax += j
31 addl $1, -12(%rbp) ;++j
32 addl -12(%rbp), %eax ;eax += j
33 movl %eax, -4(%rbp) ;q = eax
希望你能明白,^_^
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个没有标准答案的,不同的编译器有不同的结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询