回覆列表
  • 1 # 跳舞的山羊

    你好!!!char a;int b;float c;double d;c*=b+d-c這個表示式中含有不同的資料型別,那麼編譯器就會自動把低階型別向高階型別轉換(當然這個轉換是自動轉換的)即編譯器會把char ,int, float 轉換成double的型別,c*=b+d-c但是我們定義變數c是float型別的,那麼這個計算結果就會強制轉換成float,然後把轉化後float型別的資料在賦值給變數c.總結:在有不同型別的計算中,都會把低階運算想高階運算自動轉化,要是表示式中都float,那麼其他低於float型別的都會轉化成float,要是有double也是如此。但是注意一點:編譯器在計算的時候是按等級最高的型別計算的,計算的只是表示式結果的型別,那要是把高階型別的幾個賦值給低階型別,會發出自動轉換。比如:char a;int b;float c;double d;表示式a+b+c+d,那麼這個表示式中最高的型別就是double,那麼表達結果的型別就是double,但是我們可把double型別賦值給int 型別:int x=a+b+c+d,那麼此時x的型別還是int

  • 2 # 使用者3916807372217

    該題選擇D答案:

    1、a定義的是char型,實際上他也可以看做是int型,你試過沒有將一個char型的變數用%d的格式輸出後,為一個整數,該整數是該字元的ASCII碼,是十進位制而已。所以a*c之後的型別為float型

    2、a*c+c自然也就是float型了。。那麼最後就變為float減去一個double型,因為double型表示的數值精度比較高,那麼自然結果也就轉換成了double型了,你要明白型別的轉換實際上可以看做為資料在記憶體的對齊。。。

  • 中秋節和大豐收的關聯?
  • 西餐廳及酒吧管理制度?