C语言中 int a=5,b=-3,c=4;printf("%d %d",(++a,b++,b++),b++);为什么结
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/27 15:26:27
C语言中 int a=5,b=-3,c=4;printf("%d %d",(++a,b++,b++),b++);为什么结果是-2 -2?
int a=5,b=-3,c=4;printf("%d %d",(++a,b++),b++);为什么结果就变成-3 -3?
int a=5,b=-3,c=4;printf("%d %d",(++a,b++),b++);为什么结果就变成-3 -3?
#include <stdio.h>
int main(void)
{
int a=5,b=-3;
printf("%d %d",(++a,b++),b++);
return 0;
}
//gcc编译结果
gcc -Wall -ansi -S -o m.s main.c
main.c: 在函数‘main’中:
main.c:9: 警告:‘b’上的运算结果可能是未定义的
andl $-16, %esp
subl $32, %esp
movl $5, 24(%esp) //a = 5
movl $-3, 28(%esp) //b = -3
movl 28(%esp), %ecx //printf最右边参数 b = -3
addl $1, 28(%esp) //b ++ b = -2
addl $1, 24(%esp) //a ++ a = 6
movl 28(%esp), %edx //printf倒数第二个参数 b = -2
addl $1, 28(%esp) //b++
movl $.LC0, %eax //准备printf参数%d %d
movl %ecx, 8(%esp) //以下是参数入栈
movl %edx, 4(%esp)//就是将ecx eax edx的值压栈
movl %eax, (%esp)
call printf //调用printf
//最后结果是 -2 -3
//不同的编译器处理是不一样的,不要写这种代码
//如果是考试题目,参考往年的题目跟着答案写,死记硬背
int main(void)
{
int a=5,b=-3;
printf("%d %d",(++a,b++),b++);
return 0;
}
//gcc编译结果
gcc -Wall -ansi -S -o m.s main.c
main.c: 在函数‘main’中:
main.c:9: 警告:‘b’上的运算结果可能是未定义的
andl $-16, %esp
subl $32, %esp
movl $5, 24(%esp) //a = 5
movl $-3, 28(%esp) //b = -3
movl 28(%esp), %ecx //printf最右边参数 b = -3
addl $1, 28(%esp) //b ++ b = -2
addl $1, 24(%esp) //a ++ a = 6
movl 28(%esp), %edx //printf倒数第二个参数 b = -2
addl $1, 28(%esp) //b++
movl $.LC0, %eax //准备printf参数%d %d
movl %ecx, 8(%esp) //以下是参数入栈
movl %edx, 4(%esp)//就是将ecx eax edx的值压栈
movl %eax, (%esp)
call printf //调用printf
//最后结果是 -2 -3
//不同的编译器处理是不一样的,不要写这种代码
//如果是考试题目,参考往年的题目跟着答案写,死记硬背
C语言中 int a=5,b=-3,c=4;printf("%d %d",(++a,b++,b++),b++);为什么结
C语言 int a;int b; }d[3] ={{1,4},{2,5},{6,7}}; printf("%d\n",d
在C语言中 main() {int a=1,b=2,c=3; printf("%d,%d,%d,%d\n",a=b=c,
C语言中参数传递和变量自加... A:int b=0;printf("%d %d %d %d %d,",b,++b,b,
以下程序的输出结果是 int a=5,b=4,c=6,d; printf("%d\n",d=a>b?(a>c?a:c)b
一道c语言的题目 int a=1,b=2,c=3; 则语句"printf("%d",(!(a>b)&&(a+b>c)||
#include main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n
求学霸,C语言的题目(1)main(){ int a=1,b=2,c=3;printf("%d,%d,%d,%d\n",
{int a=0,b=0,c=0;c=(a-=++a),(a+=b,b+=4);printf("%d,%d,%d\n,a
c语言中a=b+c;printf("%d",a);这两个语句与printf("%d",a=b+c)这一个语句效果一样吗
main(){int a,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf("b,c,d:%
我想知道main() {int a=1,b=2,c=3; printf(“%d,%d,%d,%d\n",a=b=c,a=