我真的很新的C和我試圖運行下面的代碼在C: #include <stdio.h>
int main()
{
unsigned long i = 1UL << 2;
int j = (i==4);
printf('%d', j);
return 0;
}
但它給人的錯誤: prog.c: In function 'main':
prog.c:6:1
我知道當我們比較帶符號和無符號時,編譯器將我們的帶符號值轉換爲無符號值,當我們比較short和int時,編譯器將較小類型轉換爲較大類型。但是我編寫了這段代碼來檢查我們是否比較了一個帶符號的int x = 0xdeadbeef和unsigned short y = 0xffff,然後在將unsigned short轉換爲int之後,我們應該在y的比較處應該有0x0000ffff,它應該小於x的無符號
在這個小測試程序,可以有人給我解釋一下: 爲什麼每個地址印在兩個循環一樣嗎? 爲什麼它不同於一個循環到另一個循環? struct A {
A(){ std::cout << &v << "\n"; };
int v;
};
int main()
{
std::vector<A> vec;
int i = 10;
while (i--)