我不明白为什么代码在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。此代码是否具有未定义的行为或实现定义的行为?