【发布时间】:2023-01-26 20:55:32
【问题描述】:
是char a[3]={'H', 'i'}和char a[3]={"H","i",'\0'}在 C++ 中也一样吗?
这是一样的,因为当我尝试操作第一条语句时,编译器没有给我任何错误。
【问题讨论】:
-
如果我自己也不确定,下面是我将如何解决这个史酷比之谜: 第 1 步:编译两个版本。第 2 步:将每个版本加载到我的调试器中。第 3 步:使用我的调试器检查每个对象。你自己试过吗?你看见什么了?
-
@SamVarshavchik 关于何时可以涉及 UB 的错误建议(我假设
"H","i"是一个错字,OP 意味着char a[3]={'H', 'i'}和char a[3]={'H', 'i', '\0'}`) -
@SamVarshavchik 如果最后一个字符未初始化(实际上不是),您可以在调试器中看到任何内容,包括
\0。 -
@SamVarshavchik:它只在肯定的时候给出提示,因为 UB,实现特定的东西......