【发布时间】:2022-01-25 06:44:03
【问题描述】:
我知道 C++ 中的 Binary Literal 是从 C++14 标准化的。
但是,虽然我将std 修复为c++11,但它运行良好。因为实际上,我预计会出错。以下是我预期会出错的代码。
int main(){
int a = 0b1010; // an error is expected
std::cout << a << std::endl;
}
另外,我已经使用以下命令编译并执行了上述文件。
g++ -std=c++11 -Wall main.cpp -o runfile
./runfile
没有出现预期结果的原因是什么?是不是我做错了什么?
【问题讨论】:
-
为什么您会期望该代码出错?具体是哪一个?
-
因为二进制文字在 C++14 之前没有标准化。所以,我认为在 C++11 中使用 g++ 会出错。
-
作为 GNU GCC 一部分的 C++ 编译器(即
g++)对 C++ 有很多扩展。其中一些创新扩展已被 C++ 标准本身采用。大多数编译器都提供扩展(通常是为了促进与平台及其 API 的互操作),因此具有扩展(包括后来的 C++ 标准的复古特性)并不是 GNU GCC 独有的。