C語言基礎學習(2)

強制轉換
形式:(類型名) (表達式);
eg:
int i=5;
double a;
a=(double)(i/2);


i++和++i的區別
i++表示的是i的值+1,但是整個表達式的值還是i的原值;
++i表示的是i的值+1,表達式的值也+1;


邏輯表示符
&& 邏輯與 ;
|| 邏輯或;
邏輯非;

注:邏輯表達式的值要麼爲1,要麼爲0;
eg:99< x<1000; x=2539;
該表達式的值爲1;因爲 < 是 左結合 運算 ,先算99< x;它的邏輯值爲1,也就是1<1000;邏輯值也是1;


短路運算

int a=0;
printf("%d\n",'a'||(a=1)&&(a+=2));
printf("%d\n",a);
printf("%d\n",a=0&&(a=3)||(a+=4));
printf("%d\n",a);

讀程序時 ‘a’||(a=1)&&(a+=2) ——>a=3;
a=0&&(a=3)||(a+=4)——>a=7;
但是運行出來的結果是
這裏寫圖片描述
也就表示 (a=1)&&(a+=2),(a=3)||(a+=4)未運行;因爲 ‘a’的邏輯值是1,1和任何數邏輯或的值都爲1;程序在知道整個表達式的值爲1時,|| 後的程序也就不在運行。同理
a=0的邏輯值爲0


條件操作符 ?
條件表達式
eg:(a>b)?(max=a):(max=b);或者max=((a>b)?a:b);
a>b 的值是1時,執行中間的表達式(max=a);
a>b的值是0時,執行後面的表達式(max=b);
結合性:右結合。
條件表達式的值的類型和 3表達式和2表達式中變量或者常量中類型最高的保持一致。

序列點
逗號表達式 ,邏輯與,邏輯或 ,?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章