我不明白爲什麼代碼在VS2010中打印'3'(發佈版本),無論我是否留下'r'聲明或將其註釋掉。混淆輸出?
int main(){
int arr1[2];
int &r = arr1[0];
int arr2[2];
cout << (&arr1[1] - &arr2[0]);
}
所以,三個問題:
一個。爲什麼代碼打印3?
b。爲什麼即使存在'r'聲明也打印3? (是否因爲在C++中引用佔用存儲與否是實現定義的?)
c。此代碼是否具有未定義的行爲或實現定義的行爲?