簡體   English   中英

C++ 從 int 到 long 的轉換是促銷嗎?

[英]C++ Is conversion from int to long a promotion?

在對 web 進行了大量研究之后,我無法確定從 int 到 long 的轉換是否被視為促銷。

如果在此處的 Microsoft 網站上找到以下代碼:

long  long_num1, long_num2;
int   int_num;

// int_num promoted to type long prior to assignment.
long_num1 = int_num;

但是,它沒有在cppreference 網站上注明。

我理解促銷是一種保持價值的轉換(轉換時不會改變價值)。

有人可以幫我解決這個問題嗎?

提前致謝

 long long_num1, long_num2; int int_num; // int_num promoted to type long prior to assignment. long_num1 = int_num;

文字不正確。 int_num沒有提升,因為它已經是一個int ,所以這里沒有意義。

賦值時,會發生隱式轉換——從源類型到目標類型。 因為long可以表示int的所有值,所以值不會改變,並且int_num值會轉換為具有相同值的long

據我所知,沒有數據丟失,因為intlong都具有相同的 4 字節大小。 您可以通過運行以下代碼來檢查您的編譯器是否同意這一點:

std::cout << sizeof(int) << ' ' << sizeof(long);

output 應為“4 4”。 這意味着它們都是相同的。

編輯:對不起; 謝謝你糾正我。 大小可能會有所不同,請在引用它們時使用sizeof

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM