c语言逗号运算符用法(C语言学习第16篇---三目运算符和逗号表达式)
三目运算符(a ? b : c)可以作为逻辑运算的载体
规则:当a 的值为真时,返回b的值 , 否则返回c的值
实验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:三目运算符的返回类型
#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:逗号表达式实例
#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