有人可以幫助我在標準(C99和C++ 03)中識別下面的行會發生什麼?C/C++ Literals
uint16_t a = 5;
因此,左側是類型化變量,右側是文字,何時以及如何獲得變量的文字類型?
上述賦值是否等同於下面的語句?
uint16_t a = (uint16_t)5; /* C */
uint16_t a = reinterpret_cast<uint16_t>(5); // C++
如何:
uint16_t a = 5u;
然後,如果你有這樣的:
uint32_t b = a + 5;
是上述等同於以下語句後面的語句?
uint32_t b = (uint32_t)(a + (uint16_t)(5)); /* C */
uint32_t b = reinterpret_cast<uint32_t>(a + reinterpret_cast<uint16_t>(5)); // C++
C11和C++ 14中的東西是否改變?另外,請假定系統int是32位。我一直在C編碼一段時間,但從來沒有真正深入瞭解它,但它總是困擾我,所以如果有人能幫我解決它,我將不勝感激。
謝謝...
(編輯:加入假設int是32位)
那麼最後我們有一個標籤C和C++的問題,並且它確實**與兩者都有關聯: – Eregrith
這將是'static_cast'而不是'reinterpret_cast'(僅用於涉及指針和引用的轉換)。 –
'5'的類型爲'int','5u'的類型爲'unsigned int'。 – user3528438