条件运算符的优先级:
- 其他运算符 优先于 条件运算符 优先于 赋值和复合赋值运算符 优先于 逗号运算符
- 条件运算符的结合性是从右至左
条件运算符的一般使用形式:
表达式1?表达式2:表达式3
条件表达式的执行过程是先表达式1,若非0,则条件表达式的值是表达式2的值;若为0,在条件表达式的值是表达式3 的值。
代码如下:
#include<stdio.h>
int main(void)
{
int i=1,j=1,k=2,m=0;
int a,b,c;
// a=(i==j?(k=3):(m=-3));
// printf("i==j?(k=3):(m=-3) 运算后的值: %d\n",a);
// printf("k =%d\nm =%d\n",k,m); //k=3,m=0
//i==j -->1 -->k=3
// b=(i-1>=0?(j=i+3):(k=i-3));
// printf("i-1>=0?(j=i+3):(k=i-3) 运算后的值: %d\n",b);
// printf("i =%d\nj =%d\nk =%d\n",i,j,k); //i=1,j=4,k=2
//(i-1)>=0 -->1 -->(j=i+3) -->j=4
c=(i==j?(k=0):i>j?(k=1):(k=-1));
printf("i==j?(k=0):i>j?(k=1):(k=-1) 运算后的值: %d\n",c);
printf("i =%d\nj =%d\nk =%d\n",i,j,k); //i=1,j=1,k=0
//(i==j)?(k=0):((i>j)?(k=1):(k=-1))
//i==j -->1 --k=0
return 0;
}
结果如下: