首页 > 解决方案 > 如果我们尝试从 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”,那么结果会是什么?

标签: c++arrays

解决方案


据推测,第一行应该是

char arr[] = "Hello_World";

这将创建一个名为的数组arr,其中包含 type 的值charchar是数字类型。它不包含字符,仅包含数字。在输出时,这些数字用于根据当前字符编码查找字符字形。同样,在解释 时"Hello_World",编译器使用编译时字符编码将这些字符转换为存储在arr.

因此,当您更改这些值时会发生什么,只是这些值发生了变化。当您将该字符串写入控制台 ( std::cout << arr << '\n';) 时,输出操作会根据当前字符编码将这些数字转换为字符。

在几乎所有系统上,字符编码都是 ASCII,只要你保持在代表字母的值范围内,你就会得到你所期望的:'H' + 2is'J'等。但有些字符编码并不总是如此. 所以当你做这种事情时要小心一点。您可能会引入微妙的不可移植性。


推荐阅读