1. 程式人生 > >1.4 型別轉換和條件運算

1.4 型別轉換和條件運算

1.自動型別轉換

1.1 計算時:

  • 當運算子兩邊 出現不一致的型別時,會自動轉換成 較大的型別,大 指的是 能表達的數的範圍更大
  • char –> short –> int –> long –> long long
  • int –> floag –> double

1.2 輸入輸出時:

  • 對於 printf,任何小於int的型別 會被轉換成 int; float 會被轉換成 double
  • 但是scanf不會,要輸入 short,需要用 %hd

2.強制型別轉換

把一個量轉換成 另一個型別(通常是轉換成較小的型別)
比如: (int)10.2; (short)32
需要注意安全性,小的變數不是 總能 表達大的量,如: (short)32768;

#include<stdio.h>

int main()
{
    printf("%d\n", (short)32768); // -32768


    return 0;
}

3.強制型別轉換的優先順序高於四則運算

通過新增括號調整優先順序

#include<stdio.h>

int main()
{
    double a = 1.0;
    double b = 2.0;
    int i = (int)a / b;
    printf("%f\n", i); // 0.000000

    int j = (int)(a / b);
    printf
("%f, %d\n", j, j); // 0.000000, 0 return 0; }

4.條件運算子

count = (count > 20) ? count - 10 : count + 10;
count > 20 條件滿足時,count = count - 10,條件不滿足時 count = count + 10

優先順序:條件運算子的優先順序 高於賦值運算子,低於其他運算子

5.逗號運算子

用來連線兩個表示式,結果是 右邊的表示式的值
優先順序:是所有運算子中最低的,它兩邊的表示式先計算
組合關係是 自左向右,先計算左邊的表示式,右邊的表示式的值 作為 逗號表示式的結果

應用的場景很少,可能會用在 for 迴圈中,如:
for(i = 0, j = 10; i < j; i++, j–)…