当前位置: 首页 > 知识库问答 >
问题:

为什么它不将它初始化为一个静态整数数组?

鲁洋
2023-03-14

为什么在这种情况下两个数组的作用不同?

#include <bits/stdc++.h>
using namespace std;  
int main() {
char a[100] = {}; // all white spaces
int b[100] = {} ; // all 0 
for(int i = 0; i < 100; i++)
    cout << a[i] << "\n"; 
}
for(int i = 0; i < 100; i++)
    cout << b[i] << "\n"; 
}

共有1个答案

马浩淼
2023-03-14

它确实被初始化为零。因为它是一个字符数组,所以0只是\0字符。将该行从

cout << a[i] << "\n"; 

std::cout << '[' <<a[i] <<']' <<std::boolalpha<< (a[i] == '\0') << "\n"; 

帮助确认你所期望的是真的。

 类似资料:
  • 问题内容: 哪两个代码片段正确创建并初始化了一个int元素的静态数组?(选择两个。) 一个。 B. C。 D. 答案:A,B 在这里即使D看起来是真实的,谁能让我知道为什么D是错误的。 问题答案: 正确答案是1和2(或者用您的符号表示A和B),而且正确的解决方案是: 解决方案D不会自动初始化数组,因为运行时会加载该类。它只是定义了一个静态方法(init),您必须在使用数组字段之前调用该方法。

  • 报价王 JLS #8.1.3: 内部类不能声明静态初始值设定项 (§8.7)...... 这表现为: 现在既然Java的内部(非静态)类像其他类一样由类加载器加载,为什么我们不能为它们提供静态初始化器呢? 这一限制背后的原因是什么?

  • 我遇到了下面的Java代码,起初看起来不错,但从未编译过: 下面是IDE :变量USER_ID可能已分配的错误消息。 将值赋值给静态最终变量有问题吗?

  • 问题内容: 我有2节课: Class A: Class B: I create a Main class which just creates new A: The output I get is: 如您所见,A的构造函数在其静态初始值设定项之前被调用。 我了解它与我创建的循环依赖关系有关,但我印象中静态初始化程序应始终在构造函数之前运行。 发生这种情况的原因是什么(技术上在Java实现中)? 是

  • null null (2)会产生有趣的效果。例如。静态init命令的失败突然不再是UB(本身)了。 (3)会很奇怪。

  • 我想将一些对象实例绑定到使用Javassist创建的类。该对象是从某个源读取的,数据是预先未知的。 但当我检查API时,Javassist似乎创建了一个真正的字节码,它以“调用这个”或“实例化那个”或“使用这个常量”的形式存储初始化。 有没有办法让Javassist向运行时给定的现有实例添加一个初始化的静态字段?