c語言long轉int
⑴ c語言long long(int64)和int(int32)之間如何安全的互相轉換
int aa = (Int32)((((long)4294917296) << 32)>>32);
int32賦值給int64,因為int64的表示範圍更大,此時直接賦值,一定安全;
int64賦值給int32,如果int64中的數據值不超過int32的表示範圍,沒問題,如果超出范圍就會溢出,不能安全轉換。
就是int乘以int默認使用int做的,有可能不夠長,所以強制轉換。當然這種解釋只能是一種常見說法,還需要結合平台,與編譯器。這種東西,沒有定論的。只有實踐才能看到結果。如果實際產品中,顯然需要杜絕默認類型轉換的發生。
(1)c語言long轉int擴展閱讀:
Int64 為比較此類型的實例、將實例的值轉換為它的字元串表示形式以及將數字的字元串表示形式轉換為此類型的實例提供了相應的方法。警告在32位Intel 計算機上分配 64 位值不是原子操作;即該操作不是線程安全的。這意味著,如果兩個人同時將一個值分配給一個靜態 Int64 欄位,則該欄位的最終值是無法預測的。
⑵ c語言中long型的65530轉化為int型是多少啊為什麼啊
int的范圍是-32768至+32767,這個long的65530超過int的取值范圍了。先把long的值轉換成2進制,long型數據賦給int型變數時,將低16位值送給int型變數,而將高16 位截斷舍棄。將int型數據送給long型變數時,其外部值保持不變,而內部形式有所改變。
⑶ C語言上不是說在數字後加L或者l 就為長整型嗎
int的最大表示就是65535 你的結果超出顯示範圍了
就算你用 65535L來賦值 但是c本身是int的 不可能用賦值去改變變數本身
除非定義的時候 long c c=65535l