【问题标题】:Is char a[3]={'H', 'i'} and char a[3]={"H","i",'\0'} are the same in C++?char a[3]={\'H\', \'i\'} 和 char a[3]={\"H\",\"i\",\'\\0\'} 是在 C++ 中也一样吗?
【发布时间】: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,实现特定的东西......

标签: c++ arrays character


【解决方案1】:

答案是:是的。 https://en.cppreference.com/w/c/language/array_initialization 请参阅“从字符串初始化”和“从大括号括起来的列表初始化”部分。最著名的是int y[5] = {1,2,3}; // y has type int[5] and holds 1,2,3,0,0

【讨论】:

    猜你喜欢
    • 2019-03-21
    • 2017-06-19
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多