回覆列表
  • 1 # 老生談笑

    a+b/b等價於((int)a)+(b/b),這個根據運算的優先級別可以得到。 (int)這個是強制型別轉換,強制轉換之後((int)a)就是整型。一般這個double轉化為int型別時多數平臺下是按照向零取整的方法,於是這一步強制型別轉化後,得到5. b/b,除號兩邊都是double型別,得到的結果也是double型別。也就是1.000000; 第一步得到的5是int型別,int型別和double型別進行相加運算時,int型別會自動轉化為double型別再進行加法運算。 綜上所述有,整個表示式的結果是6.000000. 注意:在強制型別轉化時,a的型別還是double型別,保持不變。(int)這個強制轉化會產生一個新的中間變數,利用這個int型別的中間變數去進行接下來的運算。 以下是程式: #include "stdio.h" #include "stdlib.h" int main() { double a,b,c; a=5.5; b=2.5; c=(int)a+b/b; printf("...c\n"); printf("%d",sizeof(c)); printf("\n%lf",c); printf("\n\n...a\n"); printf("%d\n",sizeof(a)); system("pause"); return 1; } 程式結果是: ...c 8 6.000000 ...a 8

  • 中秋節和大豐收的關聯?
  • 有一首粵語歌叫什麼什麼今什麼?男歌手唱的!求歌名?