C语言复习三目运算符和逗号表达式

三目运算符a ?b:c    a 为真,返回b,为假返回c,有点像if else 语句。同时 三目运算符可以嵌套比如

a ?b:c?d:e;

另外在c语言中这表达式返回的是一个右值,所以不能放在=左边。

如:a ?b:c = 3;//错误。

而在c++中则是当b和c为左值或能转换为同类左值时,运算结果就为左值。否则就为右值。

a ?b:c = 3 //b和c都为左值时是正确的,不是则是错误的。

在C语言中我们可以通过取址符来改变变量值。

int a=1,b=2,c=3;

*(a < b?&b:&c) = 3;//b = 3;

三目运算符的返回类型

1。通过隐式类型转换得到较高的类型。

2.类型不能转换时,则报错。

char c = 0;
    short s = 0;
    int i = 0;
    double d = 0;
    char* p = "str";
        
    printf( "%d\n", sizeof(c ? c : s) );//整型提升 4
    printf( "%d\n", sizeof(i ? i : d) );//8
    printf( "%d\n", sizeof(d ? d : p) );//错误,无法转换。

逗号表达式

逗号表达式是C语言的粘贴剂。

它吧多个表达式连接为一个表达式,

它的值为最后一个表达式的值。前N个表达式可以没有返回值。

它是按照从左到右依次计算每个表达式的值。

学习交流群199546072

猜你喜欢

转载自blog.csdn.net/qq_39809601/article/details/81461488