Добавление двух символьных литералов в c ++ - PullRequest
0 голосов
/ 04 октября 2018

Когда я пишу следующий код, вывод равен 110. Может кто-нибудь сказать мне, почему я получаю это значение?

#include<iostream>
int main()
{
    std::cout << '9' + '5';
    return 0;
}

Ответы [ 7 ]

0 голосов
/ 04 октября 2018

Исходя из оригинального заголовка, вполне возможно, что целью ОП было объединить два строковых числа вместе.Если так, это должно достигнуть этого.

#include<iostream>
#include<string>
int main()
{
    std::cout << std::string("9") + std::string("5");
    return 0;
}
0 голосов
/ 04 октября 2018

При кодировании ASCII значения '9' и '5' равны 57 и 53.

57 + 53 равно 110.

И программа возвращает это значение.

Если вы хотите, чтобы программа возвращала сложение 9 и 5, вы должны написать следующий синтаксис: -

cout << 9 + 5; </p>

0 голосов
/ 04 октября 2018

Согласно это , значение 9 равно 57, а значение 5 равно 53. 57 + 53 равно 110. Вы добавляете эти символы, поэтому они повышаются доint, и если вы передаете int, как это, он печатается как int.

Что вы, вероятно, хотели бы

std::cout << '9' << '5';

для печати 95.Или

std::cout << 9 + 5;

для печати 14.

0 голосов
/ 04 октября 2018

Нет char operator+(char, char), но есть int operator+(int, int).Следовательно, сначала он преобразует '9' и '5' в 57 и 53 соответственно, а затем выполняет сложение, результатом которого является int 110.

0 голосов
/ 04 октября 2018

При кодировке ASCII значения '9' и '5' равны 57 и 53 (соответственно).

57 + 53 равно 110.

То, что вы добавляете, это закодированные значения символов, а не их цифры.

И вы получите вывод 110 (вместо символа ASCII 'n', которые имеют значение 110), потому что при добавлении символы становятся повышенными до int значений, а результатом является значение int, равное не конвертируется в char.

0 голосов
/ 04 октября 2018

Это потому, что символы представлены в ASCII (обычно в соответствии с рекомендациями в комментариях).

Литерал '9' равен 57, а литерал '5' равен 53. Таким образом, их сумма равна 110, что является буквальным 'м.

0 голосов
/ 04 октября 2018

Значение ASCII 9 равно 57, а 5 равно 53. Таким образом, 57 + 53 равно 110.

enter image description here

Существуетдля персонажей нет дополнений, вы добавляете их значение ascii.Если вы приведете результат к типу char, результат должен быть n.

...