#include <stdio.h>
main()
{
short vShort=3;
int *iInt=(int *)&vShort ;
printf("Value of short: %d\n",vShort);
printf("Value iof short: %d\n",*iInt);
}
我写了这段代码,但是这个变量是打印valus,如下所示。 Int-4的大小 短尺寸 - 2
当我"int*iInt=&vShort ;"
提供相同的输出时,它也无效。
输出:
短期价值:3 价值iof短:196608
答案 0 :(得分:6)
下面,
int *iInt=(int)&vShort
您正在将变量的地址转换为int
(这是未定义的行为,或者至少是定义的实现,因为整数可能不足以保持指针的值,只有uintptr_t
是。
如果你想&#34;演员&#34;一个short
到int
,只需分配它,整数提升就可以处理所有事情:
short s = 3; // note that this line already technically casts the integer literal 3 to type short
int i = s;
如果你想要一个指向int
值的指针,你需要创建一个局部变量并获取其地址,或者为malloc
分配内存:
short s = 3;
int i; // if you add "= s" here you can drop the last line
int* iptr = &i;
*iptr = s;
答案 1 :(得分:0)
实际上这种类型的代码已经存在于我们的系统中,其中删除警告开发人员类型为int的short。这就是为什么我发布这个问题的原因是错误的。