变量零初始化-是否有未定义的行为
variable zero-initialization - undefined behaviour or not
可能重复:
这种自我初始化有效吗?
这是一个定义良好的C/C++程序吗?
int foo = foo;
int main()
{
}
foo
是零初始化的,还是未定义的行为?
这是一个格式错误的C程序。在C中,具有静态存储持续时间的对象的初始值设定项必须是常量表达式。右侧的foo
不是一个常量表达式。
在C++中,它是良好的形式,并且具有定义的行为,因为具有静态存储持续时间的对象的初始化为零(在任何其他初始化之前发生)。
静态/全局变量用0初始化。因此:
int ThisIsZero;
int main(void)
{
static int AndSoIsThis;
int ButThisIsNotInitialized;
...
};
它甚至不在C中编译。除了使用编译时常数,您不能初始化全局变量。
这不会编译-问题的意义是什么?
相关文章:
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 此增量后语句是否会导致未定义的行为?
- Windows 链接器是否使用 LoadLibrary 解析 DLL 中未定义的符号?
- 如何测试 size_t -1 是否未定义,其中 size_t 为 0?
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- 负指数是否必然意味着未定义的行为
- 在"printf"中使用标签"h"或"hh"是否涉及未定义的
- 在 C++17 中,是否未定义使用无锁原子学保护从信号处理程序传递的数据?
- C++ 如何检查 char 变量是否未定义(未初始化)
- 递减 std::vector::begin 是否未定义,即使它从未被使用过?
- 访问从联合与另一个成员集复制的联合中的一个成员是否未定义或未指定?
- 在C++中,转换为simd类型是否有未定义的行为
- 是否是从等待返回到悬而未决的"this"实例的未定义行为?
- 是否未定义将对函数范围变量的引用作为值返回
- FBString 的小字符串优化是否依赖于未定义的行为?
- 移动 std::bitset<N> 是否超过 N 个位置未定义的行为?
- 创建指针是否超过非数组指针的末尾,而不是从 C++17 中的一元运算符和未定义的行为派生?
- 使用c_str是否有未定义的异常行为
- i=i++;未定义.是否i=foo(i++)也未定义