c++ - 默认值 C++11,编译器到编译器

标签 c++ c++11 default-value

问题一:

如何知道变量的默认值?那是(如果我的词汇是错误的)变量在赋值之前的值?

问题2:

这在编译器之间有何不同?

问题三:

是否有更好的默认值方法?

问题4:

最后,这条规则还有其他异常(exception)情况吗?

示例代码:

bool foolean;
int fintoo;
double fooble;
char charafoo;

编译器默认情况下这些是什么?

最佳答案

在所有版本的 C++ 中,如果您的问题中的所有变量在命名空间范围内声明,它们都将被零初始化(静态)。在所有其他情况下,如果未初始化,它们将具有垃圾值。

请注意,垃圾值是位于定义变量的内存位置的任何东西——它只是 0 和 1 的模式。 您的程序不应读取此类值,否则您的代码将调用未定义的行为

在 C++11 中,如果将它们写为局部变量(或命名空间变量):

bool foolean {};
int fintoo {};
double fooble {};
char charafoo {};

它们是默认初始化的,在这种情况下意味着零(因为它们是内置类型)。

关于c++ - 默认值 C++11,编译器到编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901706/

相关文章:

swift - 使用默认值参数覆盖函数时,如何保持默认值与父类(super class)相同?

class - 如何覆盖类中字段的默认值?

c# - 如果在任何时候返回默认值,则停止 LINQ 查询

c++ - C 和 C++ 源代码分析工具

c++ - 如何从 qml 启动一个 Qthread?

c++ - 将大量二进制数据加载到 RAM 中

c++ - 分配不同类型的多维 vector

c++ - 有没有办法为函数模板特化命名类型?

java - 没有使用 JNA 获取 C++ 结构

c++ - 变量的别名在运算符重载中不起作用