我有關於Union
的以下程序。我沒有真正與很多人合作過,但從我所瞭解的Union
的元素共享相同的內存空間。此外,當我第一次看着我的老師幻燈片時,我以爲這是某種東西similar
像structs
但沒有。無論如何,所以我試圖打印一個Union
價值,但我不明白。有人可以告訴我爲什麼它只打印1
並忽略前5個字符?第二個問題; 有沒有一種方法來計算a ^= b;
沒有轉換a
和b
二進制?這是一箇中期練習的問題,我認爲可能有更快的方法來解決,因爲它是一門課程,而不是數字系統課程。在C++中使用聯合和hexa
// Example program
#include <iostream>
#include <string>
union Combi {
int i;
short s;
};
int main()
{
unsigned int a = 0xFF, b= 0x0F0F;
a ^= b;
Combi c;
c.i = 0xFF0001;
std::cout << c.s<<" "<<a;
}
謝謝。對不起,我不太熟悉'decimalwise'與'decimal'的用法。你能舉一個簡單的解釋來舉個例子嗎?就像我看到'F^F'是'0',我想結果會是'F',就像'1^1'給出'1'一樣。 – Bobby
既然'^'是按位異或運算符,'F^F == 0'是正確的。同樣,'1^1 == 0'是你應該得到的,這就是我的系統實際提供的(OS X Yosemite w/clang)。如果你的系統給出了'1^1 == 1'這是一個錯誤。同樣'15^15 == 0'和'15^7 == 8',都是正確的並且不使用二進制符號。按位和運算符是'&',位運算符是'|'。 –
謝謝,不知道爲什麼我認爲它是'and' -__- – Bobby