c++ - 如果我们尝试从 C++ 中的字符中减去一个数字,结果是什么?
问题描述
我有一个测试,我给出的代码是在循环中从数组的每个字符中减去一个整数,我必须写出它的输出。
arr[] = "Hello_World"
for (int i=0; i< str.length; i++)
{
if (i%2 == 0)
{
arr[i] = arr[i] + 2;
}
else
{
arr[i] = arr[i] - 2;
}
}
因此,当我们将 arr[i] 加上或减去 2 时,假设为“H”,那么结果会是什么?
解决方案
据推测,第一行应该是
char arr[] = "Hello_World";
这将创建一个名为的数组arr
,其中包含 type 的值char
。char
是数字类型。它不包含字符,仅包含数字。在输出时,这些数字用于根据当前字符编码查找字符字形。同样,在解释 时"Hello_World"
,编译器使用编译时字符编码将这些字符转换为存储在arr
.
因此,当您更改这些值时会发生什么,只是这些值发生了变化。当您将该字符串写入控制台 ( std::cout << arr << '\n';
) 时,输出操作会根据当前字符编码将这些数字转换为字符。
在几乎所有系统上,字符编码都是 ASCII,只要你保持在代表字母的值范围内,你就会得到你所期望的:'H' + 2
is'J'
等。但有些字符编码并不总是如此. 所以当你做这种事情时要小心一点。您可能会引入微妙的不可移植性。
推荐阅读
- jquery - 如何使用对 API 的 ajax 调用在 HTML 中创建级联相关下拉菜单
- angular - 如何在 Angular 中使用继承或其他方式复制 NgTemplate 和 NgTemplate Outlet
- python - AES Crypt 版本 2 问题
- c# - UI 图像在错误的位置实例化
- r - 图像到 R 中的 excel 电子表格
- java - 在 arraylist 问题中列出
- angular - Angular 8 获取请求:标头发送为 nulll
- python - Raspberry PI 多线上的 LED 矩阵?
- php - 从数组php中的数据库获取数据
- java - 如何将存储为小端字节数组的 uint16 转换为 int?