C语言数组和地址问题
#include<stdio.h>intmain(){charc[4]={8,2,0,0};int*p;p=(int*)c;printf("%d",*p);}为什么输出会...
#include<stdio.h>
int main(){
char c[4]={8,2,0,0};
int *p;
p=(int*)c;
printf("%d",*p);
}
为什么输出会是520啊,期望大神解答 展开
int main(){
char c[4]={8,2,0,0};
int *p;
p=(int*)c;
printf("%d",*p);
}
为什么输出会是520啊,期望大神解答 展开
5个回答
展开全部
字节是低位先存 换成16进制是0x208
2x256+8 512十8=520
2x256+8 512十8=520
追问
其他都懂了,只是为什么这时候换成了16进制啊
追答
16进制好看啊 两位表示一字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用一个整形的指针指向字符形的变量,这种行为本身就不正确。
你不用太关注结果是什么,只需要知道指针不能这么用就好了。
你不用太关注结果是什么,只需要知道指针不能这么用就好了。
追问
老师要我们讲原理,没法呀,大佬能不能讲一下为什么啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询