#include <stdio.h>
int main()
{
int a = 10, b, c = 14, d;
float e = 7.586, f, g = 682.546, h;
char i = 'b', j, k = 'h';
b = a + c;
f = e + g;
j = i + k;
printf("the value of a and c of addition is :%d\n",b);
printf("the value of e and g of addition is :%f\n",f);
printf("the value of a and c of addition is :%c",j);
}
я пытаюсь объединить значения int,float,character, но я получил только объединенное значение int и символ значения float не могу... кто-нибудь объяснит, как решить эту проблему???
Добавление двух char
не объединяет их, как если бы они были строками, а выполняет арифметическое сложение их ненадежных значений (здесь в ascii).
Знак плюс +
означает сложение, а не конкатенацию. 10+14 = 24.
Я удалил тег basic
, так как он относится к вопросам, касающимся базового языка.
В обычных системах, использующих производные кодировки ASCII, 'b'
— это значение 0x62 или 98, 'h'
— это значение 0x68 или 104. При их добавлении вы сначала получаете 202 или 0xca, который отображается на символ, отличный от ASCII, но фактический символ зависит от кодировки. В обычном коде Latin1 (ISO-8859-1) вы получите 'Ê'
.
printf("%c%c", я, к)
Когда вы добавляете символы, вы фактически добавляете коды ASCII в фоновом режиме. Например, когда вы добавляете эти два символа ! (значение ASCII 33) и " (значение ASCII 34), результат равен 67, что соответствует C, если вы посмотрите на его эквивалент в таблице ASCII.
#include <stdio.h>
int main()
{
int a = 10, b, c = 14, d;
float e = 7.586, f, g = 682.546, h;
char i = '!', j, k = '"';
b = a + c;
f = e + g;
j = i + k;
printf("the value of a and c of addition is :%d\n",b);
printf("the value of e and g of addition is :%f\n",f);
printf("the value of a and c of addition is :%c\n",j);
}
ВЫХОД:
the value of a and c of addition is :24
the value of e and g of addition is :690.132019
the value of a and c of addition is :C
Если мне нужно объяснить более подробно, что на самом деле делает система при добавлении двух типов char: тип данных char: 8-битный, т. е. 1 байт. Переменная типа char фактически содержит числовой эквивалент (код ASCII) символа ASCII. Например, код ASCII символа «а» равен 97. При добавлении вы добавляете эквиваленты ASCII, что приводит к созданию неожиданных символов.
Эквиваленты ASCII в приведенном вами примере
char i = 'b'; // ASCII 98
char k = 'h'; // ASCII 104
char j = i + k; // j = 98 + 104 = 202
Вы можете увидеть эквивалент ASCII на этой странице.
Значение, соответствующее 202, может не поддерживаться терминалом, с которого вы осуществляете вывод, поэтому вы можете увидеть его как «�». Вы можете понимать эти знаки как недопустимые символы.
Вам нужно будет сказать, каков ожидаемый результат. Вы говорите о конкатенации, но код говорит о сложении, это две разные вещи.