1. 程式人生 > >C語言筆記 第十八課 三目運算子和逗號表示式

C語言筆記 第十八課 三目運算子和逗號表示式

第十八課 三目運算子和逗號表示式

三目運算子

三目運算子(a?b:c)可以作為邏輯運算的載體
規則:當a的值為真時,返回b的值;否則返回c的值
下面的程式執行結束後,a,b,c的值分別為多少?
int a = 1;
int b = 2;
int c = 0;
c = a<b?a:b;
(a<b?a:b) = 3;
18-1 三目運算子初探

三目運算子(a?b:c)的返回型別

通過隱式型別轉換規則返回b和c中的較高型別
當b和c不能隱式轉換到同一型別時將編譯出錯
在這裡插入圖片描述
18.2 三目運算子的返回型別

逗號表示式

逗號表示式是C語言中的“貼上劑”
逗號表示式用於將多個子表示式連線為一個表示式
逗號表示式的值為最後一個子表示式的值
逗號表示式中的前N-1個子表示式可以沒有返回值
逗號表示式按照從左向右的順序計算每個子表示式的值
exp1,exp2,exp3,…,expN
18.3 逗號表示式示例

18.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;
}

小結:
三目運算子返回變數的值,而不是變數本身
三目運算子通過隱式型別轉換規則確認返回值型別
逗號表示式按照從左向右的順序計算每個子表示式的值
逗號表示式的值為最後一個子表示式的值