簡體   English   中英

通過使用int和char數組的聯合找到int值,但是這個值是怎么來的?可以告訴任何人嗎?

[英]By using union of int and char array finding the int value,but how this value is coming ?can tell anyone?

我已經編寫了 c++ 代碼來理解聯合概念。在代碼中,我將一些字符分配給 char 數組並打印 int 值,但我不明白其背后的邏輯。需要幫助嗎? 下面是我寫的代碼。

#include <iostream>
union float_u {
    int f;
   char a[sizeof(int)];
} data1;

  using namespace std;

int main()
{


    cout << "Size of union :" << sizeof(data1)<<endl;

   data1.a[0] = '@';
   data1.a[1]= '@';


   cout << "value of f :" << data1.f << endl;

   return 0;
 }

Output 是這樣的:

工會規模:4

f 的值:16448

你無法通過編寫代碼並研究它的 output 來理解 C++。那是因為有太多方法可以編寫 C++ 編譯無誤但具有未定義行為的代碼。

我引用自https://en.cppreference.com/w/cpp/language/union

從不是最近寫入的聯合成員中讀取是未定義的行為。

您正在寫信a . a是工會的活躍成員。 f讀取未定義。 原則上您可以獲得任何 output。

許多編譯器作為非標准語言擴展實現了讀取聯合的非活動成員的能力。

據我所知,在 C 中允許通過聯合進行類型雙關,因此編譯器在 C++ 中也允許它並不難。但是,當您使用編譯器擴展時,您需要注意它不是標准的可移植 C++,你需要閱讀你的編譯器手冊。

暫無
暫無

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

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