C语言的一个问题
void main()
{
short i = 255;
char *cp;
cp = &i;
printf("%d\n",*cp);
}
我电脑用sizeof(short)得出来的结果是2,sizeof(char)得出来的结果是1
i = 255的二进制为11111111,这样cp得到的就是指向i的低位,就是这个的值,结果应该是-127,可是为什么打印出来的是-1呢?
void main()
{
short i = 512;
char *cp;
cp = &i;
cp++;
printf("%d\n",*cp);
}
这样cp指向变量i的高8位,512的二进制为:1000000000,cp++后指高i的高8位,打印出来的值为2,这个结果是正确的。
void main()
{
short i = 65535;
char *cp;
cp = &i;
cp++;
printf("%d\n",*cp);
}
这样为什么打印出来的又是-1了?
11111111这个表示的不是-127吗?怎么会是-1了?
请高人帮解释下?
...全文
相关推荐
一个有趣的问题的C语言编程
问题:有两个没有刻度的8两的酒瓶和一个可以没有刻度的3两的酒杯,现在有16两酒要平均分给4个人喝,怎么分配?
红黑树C语言源码,基于一个具体问题
红黑树的C语言实现,附加了顺序统计域,思想源自《算法导论》第三版ch13伪代码,基于的具体问题为:学校举办了一个在线ACM比赛,快速实现榜单的插入、删除、第k小查询
一个C语言的命名问题.pdf
一个C语言的命名问题.pdf
一个C语言的命名问题 (2014年)
针对一次全局函数和全局变量命名相同引起的软件故障问题,对C语言的命名问题进行研究。研究验证结果表明:当全局变量名与全局函数名相同时,变量指向了函数代码或函数指向了变量地址,这2种情况都会引起程序异常的发生。文中给出了避免该问题的方法。
一个关于万年历问题的c语言程序
是用C语言编写的万年历程序,适用于c语言初学者


