我发现了
char p = 1;
p = (int)p;
p = 0x12345678;
使p
为'0x78',因为与我的猜测不同,第二行中p
的类型未更改为int
。如何在不声明新变量的情况下更改p
的类型本身?
答案 0 :(得分:1)
对象永远具有C语言的类型。相反,您通常可以将其值cast
设置为另一种类型。在您的示例中,(int)p
的{{1}}值被转换为int,但是原始的p
变量将具有相同的类型。
答案 1 :(得分:0)
切换到具有所需类型的其他变量名称。
char p = 1;
int q = (int)p;
q = 0x12345678;
我知道没有其他解决方法。
作为旁注,如果要确保可移植性,则在将char转换为整数或反之时要小心。 C标准可确保例如从“ 0”到“ 9”将是连续的且递增的,但不能保证其值。