c - 为什么 printf() 打印两个字符数组?
问题描述
我已经声明了两个简单的字符数组。在一个字符串上调用 printf() 时,会打印两个数组。为什么?
#include <stdio.h>
int main()
{
char z[] = "The C programming language.";
char v[2] = {'q', 'w'};
printf("%s \n", v);
return 0;
}
预期结果:qw。得到的结果:qwC 编程语言。两个数组是连接的??
解决方案
- 'q' 不是数组,只是整数。
初始化数组时,这两个整数存储为数组元素。
什么都没有加入。
这是未定义的行为,因为 printf 查找终止零并读取数组边界之外
推荐阅读
- python - 如何转换 struct.pack
- python - 在最后一个块中同时执行 if 和 else 语句
- scala - List ADT的模式匹配自定义实现
- polymorphism - Rank n 类型、接口和统一 idiris
- laravel - Laravel 6 是否在工厂/测试中禁用观察者?
- prometheus - 配置了 slack api 令牌,aletmanager 需要将其设为机密,以免通过 gitlab 暴露
- java - 如何使用 apache Tika 将 xml 文件转换为 HashMap
- javascript - 在 Typescript Angular 中使用接口检查 API 响应数据
- c - 如何在不知道文件大小的情况下在 Windows 平台中找到内存映射文件的结尾?
- python - 如何使用 Python 列出存储在 Google Cloud 存储桶中的对象?