Прежде всего, это небольшая программа, которую я сделал:Сумма двух символов
#include <stdio.h>
int main(void) {
char z = '"' + '!';
printf("%c\n", z);
return 0;
}
Консоль дает мне «C». Поэтому я считаю, что это нормально. Я читал, что когда мы вычисляем символы, они превращаются в десятичное значение.
ASCII ----> decimal
'"' ----> 34
'!"----> 33
34 + 33 = 67
C-----> 67
Все выглядит нормально.
Но, когда я пытаюсь сделать: 'a' + 'b', это дает мне '\ 303'. Зачем?
a ---> 97
b ---> 98
97 + 98 = 195.
195 вне таблицы ASCII, поэтому я ожидал получить сообщение об ошибке.
Заранее благодарю вас за помощь и благодарность за подробный о моем сломанном английском языке!
Что именно печатает? Это может зависеть от вашего набора кодировок. – Artyom
«когда мы вычисляем символы, которые они превращают в десятичное значение»: Да, текст отсутствует, но закодирован. Знание того, какой набор символов и кодировка используется, может быть чрезвычайно важным - и, вероятно, это не ASCII. Сделайте 'locale' или' chcp' в своей консоли. BTW - '\ 303' - 195. –
все значения char от -128 до 127 можно печатать (char в значении знака в диапазоне [-128, 127]). Следующий код распечатывает все: 'int z; for (z = 0; z <256; z ++) printf ("% c \ n ", (char) z);'. '(char) (97 + 98)' равно '-61' из-за переполнения. – Rotem