NO.149三目 >计算题
本帖最后由 我爱橙 于 2022-2-25 10:31 编辑#include <stdio.h>
#include <math.h>
int main()
{
int a=7,b=9,t;
t=a*=a>b?a:b;
printf("%d\n",t);
return 0;
}
为什么结果是63?
>优先级高,
先判断7<9结果为假0,
a=a*0=0,
再把0赋值给t
本帖最后由 isdkz 于 2022-2-25 10:01 编辑
t=a*=a>b?a:b;
拆开就是
a>b?a:b因为a小于b所以结果是b,
a*=a>b?a:b就变成了a*=b,结果是63,然后赋值给t,
右边的三元表达式是整体的,你不要光看a>b #include <stdio.h>
#include <math.h>
int main()
{
int a = 7, b = 9, t;
t = a *( a>b ? a : b);
printf("%d\n", t);
return 0;
}
写成这样不是更容易让人理解吗? isdkz 发表于 2022-2-25 09:39
t=a*=a>b?a:b;
拆开就是
a>b?a:b因为a大于b所以结果是b,
1.顺序是这样吗?
t=(a*=((a>b)?a:b));
2.a=7,b=9
a<b啊
3.<结果不是为1或者0吗 我爱橙 发表于 2022-2-25 09:58
1.顺序是这样吗?
t=(a*=((a>b)?a:b));
1.顺序是这样的,三元表达式是一个整体
t=(a*=(a>b?a:b));
2.确实是 a小于b,我刚刚写错了,三元表达式不满足条件时,值为右边的值,所以得出 b
3.三元表达式是整体的,你现在不能拿它来当条件表达式看
页:
[1]