三目运算符(a ? b : c)
三目运算符(a ? b : c)可以作为逻辑运算的载体;
规则:当a的值为真时,返回b的值;否则返回c的值。
三目运算符不可以当作左值使用。三目运算符返回值为一个值,而不是变量本身。
小技巧:
这里可以用地址来解决,因为变量的地址就是一个值。
*(a < b ? &a : &b)= 3;
三目运算符(a ? b : c)的返回类型:
1)通过隐式类型转换返回b和c中的较高类型;
2)当b和c不能隐式转换到同一类型时,编译出错。
最后一行编译不通过。
1)逗号表达式是C语言中的“粘贴剂”;
2)逗号表达式用于将多个子表达式连接为一个表达式;
3)逗号表达式的值为最后一个子表达式的值;
4)逗号表达式中的前N-1个子表达式可以没有返回值;
5)逗号表达式按照从左向右的顺序计算每个子表达式的值。
下面的程序输出什么?为什么?
int a[3][3] = {
(0, 1, 2), //只有2
(3, 4, 5), //只有5
(6, 7, 8) //只有8
}; //前三个元素初始化为2,5,8。
小结:
1)三目运算符返回变量的值,而不是变量本身;
2)三目运算符通过隐式类型转换确认返回值类型;
3)逗号表达式按照从左向右的顺序计算子表达式的值;
4)逗号表达式的值为最后一个子表达式的值;
一行实现strlen:(用断言函数判断字符串是否为空指针)
计算子串的长度加1就是字符串的长度。