2015-10-30 84 views
1

例如,我有以下幾點:如何將long long轉換爲int工作?

#include <iostream> 

int main() 
{ 
    long long a = 2346436346346346; 

    int b = a; 
    //int b = static_cast<int>(a) //same result 

    std::cout << a << "\n" << b; 

    std::cin.get(); 
} 

輸出:

2346436346346346 
1223261034 

通過什麼邏輯呢b採取價值?

回答

8

b通過什麼邏輯取值?

這是實現定義的,你的情況的值將被截斷:

2346436346346346 in binary is: 

0000000000001000 0101011000010010 0100100011101001 0111101101101010 

1223261034 in binary is: 
            0100100011101001 0111101101101010 
9

溢流分配給一個符號整型的結果是實現定義:

如果目標類型有符號,則該值是不變的,如果它可以在目標類型來表示(和 比特字段寬度); 否則,該值是實現定義的

(4.7條第3 N4140)

所以,你得去問誰提供您的實現他說的話,結果將是,C++標準並沒有說在問候的事情。

2

根據標準4.7 \ P3積分轉換[conv.integral](重點煤礦)

如果目標類型是有符號的,如果目標類型可以是 ;否則,的值爲 實現定義

相關問題