#c
#c
Вопрос:
Я обнаружил, что
char p = 1;
p = (int)p;
p = 0x12345678;
делает p
‘0x78’, потому что p
тип не изменяется на int
во второй строке, в отличие от моего предположения. Как я могу изменить сам тип p
, не объявляя новую переменную?
Комментарии:
1. вы не можете этого сделать
Ответ №1:
В языке C объекты имеют свои типы навсегда. Вместо этого вы часто можете cast
присвоить ее значению другой тип. В вашем примере (int)p
значение p
преобразуется в int, но исходная p
переменная будет иметь тот же тип.
Ответ №2:
Переключитесь на другое имя переменной с желаемым типом.
char p = 1;
int q = (int)p;
q = 0x12345678;
Другого обходного пути, о котором я знаю, не существует.
В качестве дополнительного примечания, если вы хотите обеспечить переносимость, будьте осторожны при преобразовании символов в целые числа или наоборот. Стандарт C гарантирует, что, например, от ‘0’ до ‘9’ будут последовательными и возрастающими, но не дает никаких гарантий относительно их значений.