gaa*_*kam 4 c++ undefined-behavior
#include <iostream>
using namespace std;
int main() {
int i = 0;
if(true) {
int i = 5;
cout << i << '\n';
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
尝试在Ideone上运行上面的代码,看看它是否合法.结果让我感到困惑:
正如您从我的链接中看到的,每次在Ideone上编译时,相同的代码行为都完全不同!这闻起来像未定义的行为(UB).
OK C++因其不直观的行为而闻名但是! - 我承认它只是我的直觉,但我不希望C++在内部范围UB中重新声明一个变量!Id期望阴影或强制编译错误.
根据C++标准,我的代码真的是UB,还是只是Ideone和/或gcc的特性?如果它是UB,是UB,因为我重新申报i
或出于其他原因我现在没有注意到?
在封闭范围内重新声明变量是UB吗?
不它不是.
您看到的编译器错误很可能是由i
声明外部但未使用的事实引起的.
否则,你的代码就好了.
它在https://ideone.com/AwVJqZ以及我的桌面上都适用于我.
归档时间: |
|
查看次数: |
168 次 |
最近记录: |