Вопрос новичка) Как я могу изменить тип переменной навсегда?

#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’ будут последовательными и возрастающими, но не дает никаких гарантий относительно их значений.