c语言逗号运算符用法(C语言学习第16篇---三目运算符和逗号表达式)

原文首发于同名微信公号「Allen5G」,欢迎大家搜索关注,欢迎转发!

三目运算符(a ? b : c)可以作为逻辑运算的载体

规则:当a 的值为真时,返回b的值 , 否则返回c的值

实验1:三目运算符初探

c语言逗号运算符用法(C语言学习第16篇---三目运算符和逗号表达式)(1)

#include <stdio.h> int main() { int a = 1; int b = 2; int c = 0; c = a < b ? a : b; (a < b ? a : b) = 3; printf("%d\n", a); printf("%d\n", b); printf("%d\n", c); return 0; }

三目运算符(a ? b : c)的返回值类型

~通过隐式类型转换规则返回b 和 c中的较高类型

~当b 和c 不能隐式转换到同意类型时将编译出错

实验2:三目运算符的返回类型

c语言逗号运算符用法(C语言学习第16篇---三目运算符和逗号表达式)(2)

#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) ); printf( "%d\n", sizeof(i ? i : d) ); printf( "%d\n", sizeof(d ? d : p) ); return 0; }

逗号表达式:

实验3:逗号表达式实例

c语言逗号运算符用法(C语言学习第16篇---三目运算符和逗号表达式)(3)

#include <stdio.h> void hello() { printf("Hello!\n"); } int main() { int a[3][3] = { (0, 1, 2), (3, 4, 5), (6, 7, 8) }; int i = 0; int j = 0; while( i < 5 ) printf("i = %d\n", i), hello(), i ; for(i=0; i<3; i ) { for(j=0; j<3; j ) { printf("a[%d][%d] = %d\n", i, j, a[i][j]); } } return 0; }

实例4:一行代码实现strlen函数

#include <stdio.h> #include <assert.h> int strlen(const char* s) { return assert(s), (*s ? strlen(s 1) 1 : 0); } int main() { printf("len = %d\n", strlen("Delphi")); printf("len = %d\n", strlen(NULL)); return 0; }

小结:

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

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

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

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

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页