强制类型转换short*到int*,没有达到预期的效果。为何?
int main(void)
{
short a=0x0001;
short b=0x0002;
short c=0x0004;
int *pb= (int*)&b;
printf( "%x\n", *pb );
return 0;
}
我预期的是,printf输出0x00010002或者0x00020004,因为int*要去4个地址的内容。
但是我运行的结果却是cccc0002,也就是没有取得变量a或者c的内容。
这是为什么呢? VC2005sp1。
...全文
相关推荐
强制类型转换
数据类型从小到大自动转换:boolean → byte → short → char → int → long → float → double。
c#中(int)、int.Parse()、int.TryParse、Convert.ToInt32的区别详解
**(int)变量名 [强制类型转换]** - 强制类型转换主要用于将一种数字类型转换为另一种。
C强制类型转换-C教程共5页.pdf.zip
强制类型转换的规则: - 整型提升:在表达式中,较小的整数类型会被提升到较大的整数类型,如char和short会被提升为int。
Java中类型转换.pdf
具体规则为:所有的 byte、short、char 型的值将被提升为 int 型;如果有一个操作数是 long 型,计算结果是 long 型;如果有一个操作数是 float 型,计算结果是 float
Java基础之隐式转换vs强制转换
而在`s += 1`的表达式中,它等价于`s = (short)(s + 1)`,这里有一个隐含的强制转换,确保没有数据丢失,因此可以正确编译和运行。


