Добавление положительного числа к символу неожиданно уменьшает его значение - PullRequest
1 голос
/ 08 апреля 2020

Я пытался решить проблему с Caesar Cipher и застрял на очень новичке, похожем на баг, но я не знаю, почему мой код ведет себя так. Я добавил целое число к символу и ожидал, что он увеличится в стоимости, но вместо этого получаю отрицательное число. Вот мой код. Хотя я нашел способ обойти это, но почему этот код ведет себя так?

#include <iostream>
using std::cout; using std::endl;

int main()
{
    char ch ='w';
    int temp;
    temp = int(ch) + 9;
    ch = temp;
    cout<<temp<<endl;
    cout<<(int)ch;
    return 0;
}

Вывод:

128
-128

1 Ответ

5 голосов
/ 08 апреля 2020

Тип char со знаком обычно может содержать значения от -128 до 127.

При значении 128 он переполняется.

...