大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
1.运算方向从左往右,从右往左结合,只有一个表达式被计算
百度百科:三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。
对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。
验证
int main()
{
int a=3,b=3,c=1,k=4;
// printf("%d\n",k>a?2: c<b?(--k):++k); //2
// printf("%d\n",k); //4
printf("%d\n",k<=a?2: c<b?(--k):++k); //3
printf("%d\n",k); //3
}
如果读取顺序为从右到左,k应该从4自减为3,从输出结果可以看出k值没变。说明三元运算符从右往左结合,但是运算还是从左往右。
2.表达式 (n>0)?f:n的类型是float,与n是否为正值无关
int a=1;
float b=4.0;
printf("%d\n",typeid(int)==typeid(1>0?a:b)); //0
printf("%d\n",typeid(int)==typeid(1>0?b:a)); //0
printf("%d\n",typeid(float)==typeid(1>0?a:b));//1
printf("%d\n",typeid(float)==typeid(1>0?b:a));//1
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188122.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...