【C语言学习记录18】三目运算符和逗号表达式

三目运算符(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就是字符串的长度。

猜你喜欢

转载自blog.csdn.net/haibing_x/article/details/94591355