渐弃 发表于 2020-4-13 18:15:59

C语言

int a=-5,b=5;
printf(a>b?"a=%d":"b=%d\n",a,b);
为什么上面这段程序运行出来的结果b=-5

int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
   printf("%d,%d,%d\n",a,b,c);

为什么这段程序运行出来的结果是0,0,5?
(a=b,b+3)这一段程序什么意思?

永恒的蓝色梦想 发表于 2020-4-13 18:28:03

三元表达式,条件为假取后面的值。

zSoy 发表于 2020-4-13 18:32:50

int a=-5,b=5;
printf(a>b?"a=%d":"b=%d\n",a,b);
a>b为假,所以输出printf("b=%d\n",a,b);因为只有一个%d,所以只取第一个值

zSoy 发表于 2020-4-13 18:40:10

int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
c=(a-=a-5)   a=a-(a-5)=a-a+5所以c=a=5,但又因为a=b所以a=b=0

害羞的新手 发表于 2020-4-14 09:16:40

zSoy 发表于 2020-4-13 18:32
int a=-5,b=5;
printf(a>b?"a=%d":"b=%d\n",a,b);
a>b为假,所以输出printf("b=%d\n",a,b);因为只有一个% ...

这个答案可以
页: [1]
查看完整版本: C语言