1 三目运算符
- 三目运算符(a ? b : c)可以作为逻辑运算的载体。
- 规则:当a的值为真时,返回b的值,否则返回c的值。
实例分析:三目运算符初探
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
int c = 0;
c = a < b ? a : b;
(a < b ? a : b) = 3; //error
/* 可以通过如下方式利用三目运算符改变变量的值:*(a < b ? &a : &b) = 3; */
printf("%d\n", a); // 1
printf("%d\n", b); // 2
printf("%d\n", c); // 1
return 0;
}
2 三目运算符(a ? b : c)的返回类型
通过隐式类型转换规则返回b和c中的较高类型。
当b和c不能隐式转换到同一类型时将编译出错。
实例分析:三目运算符的返回类型
#include <stdio.h>
int main()
{
char c = 0;
short s = 0;
int i = 0;
double d = 0;
char* p = "str";
printf( "%d\n", sizeof(c ? c : s) );//4,当char类型和short类型进行运算时将会被转换成int类型
printf( "%d\n", sizeof(i ? i : d) );//8
printf( "%d\n", sizeof(d ? d : p) );//error
return 0;
}
3 小结
- 三目运算符返回变量的值,而不是变量本身。
- 三目运算符通过隐式类型转换规则确认返回值类型。