首页 > 编程知识 正文

c语言有三目运算符嘛,c语言 三目运算符

时间:2023-05-06 13:48:06 阅读:244014 作者:97

--事物的难度远远低于对事物的恐惧!   

    前几章节分析了逻辑运算符、位运算符和 ++ --运算符,那么这个章节,我们来分析下三目运算符和逗号表达式。

    C语言中的三目运算符表达式格式为: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;    //这句是否成立?在C语言中,三目运算符返回的是变量的值,故不能作为左值使用。                          //而在C++中,则可以返回对应的变量 printf("%dn", a); printf("%dn", b); printf("%dn", c); return 0;}

输出结果为:  

我们重点来谈谈三目运算符的返回值类型(a ? b : c):

    -在三目运算符中,通过隐式类型转换规则返回b和c中的较高类型

    -当b和c不能进行隐式转换到同一类型时将编译出错

说完了规则,那么我们来看看下边的示例:

#include <stdio.h>int main(){     char c = 0;    int i = 0;    double d = 0;    char* p = "str";    printf( "%dn", sizeof(c ? c : i) );//返回类型为i跟c中较高的类型    printf( "%dn", sizeof(i ? i : d) );//返回类型为i跟d中较高的类型    //printf( "%dn", sizeof(d ? d : p) );//error p与d不能隐式转换,编译出错    return 0;}

输出结果为:

 

分析完了三目预算符,现在我们来分析下逗号表达式

exp1, exp2, expp3, ... , expN-1, expN;

    -逗号表达式是C语言中的"粘贴剂"

    -逗号表达式用于将多个字表达式连接为一个表达式

    -逗号表达式的值为最后一个子表达式的值

    -逗号表达式的前 N-1 个子表达式可以没有返回值

    -逗号表达式按照从左向右的顺序计算每个子表达式的值

来看看下边的代码,执行后会输出什么:

#include <stdio.h>void hello(){ printf("Hello!n");}int main(){ int a[3][3] = {    //定义的数组,(0,1,2)其实等价于(2),所以数组等价于 int a[3][3] = {2, 5, 8}; (0, 1, 2), (3, 4, 5), (6, 7, 8) }; int i = 0; int j = 0; while( i < 5 )        //下边的三条语句前两句结束符都是逗号,相当于一个逗号表达式,返回值为最后一个子表达式,而前两个表达式都会被执行到 printf("i = %dn", i), hello(), i++; for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("a[%d][%d] = %dn", i, j, a[i][j]); } } return 0;}

执行结果为:

 

总结:

    1、三目运算符返回变量的值,而不是变量本身

    2、三目运算符通过隐式类型转换规则确认返回值类型

    3、逗号表达式按照从左向右的顺序计算每个字表达式的值

    4、逗号表达式的值为最后一个子表达式的值

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。