回覆列表
-
1 # 老生談笑
相關內容
- if條件的表示式可以是int型別?
- 在c++中定義時int和double有何區別?
- 為什麼Python不需要定義int double char等型別且可以直接高精度演算法,而C++需要?
- 大神可以解釋一下c語言裡int,double,c,d,IF都是什麼意思、在什麼情況下用嗎?
- 1,若有以下定義,char a;int b;float c;double d;則表示式a*b+d-c值的型別為( )?
- 若有int y;則表示命題“y是偶數”成立的c語言表示式是多少?
- 已知定義int a=2,則表示式a+=a*=a-=a*a的值是?
- int型除以double型,結果是什麼型?
- C/C++實戰030:double轉int常見的取整操作
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