
C语言中~0之类的问题
#include<stdio.h>intmain(){/*先把数字0的各个二进制位全部转化为1*/printf("%d\n",~0);/*在转换成unsignedchar...
#include<stdio.h>
int main()
{
/*先把数字0的各个二进制位全部转化为1*/
printf("%d\n",~0);
/*在转换成unsigned char类型*/
printf("%d\n",(unsigned char)~0);
/*再类型值右移一位以清除符号*/
printf("%d\n",(unsigned char)~0 >> 1);
/*再转化为char类型*/
printf("%d\n",-(char)((unsigned char)~0 >> 1));
printf("sign char max = %d\n",(char)((unsigned char)~0 >> 1));
return 0;
}
这个程序我看了注释还没看懂,~0的这个0在没有经过(unsigned char)转化的的时候是什么类型的呢?这个程序是怎么执行的呢? 展开
int main()
{
/*先把数字0的各个二进制位全部转化为1*/
printf("%d\n",~0);
/*在转换成unsigned char类型*/
printf("%d\n",(unsigned char)~0);
/*再类型值右移一位以清除符号*/
printf("%d\n",(unsigned char)~0 >> 1);
/*再转化为char类型*/
printf("%d\n",-(char)((unsigned char)~0 >> 1));
printf("sign char max = %d\n",(char)((unsigned char)~0 >> 1));
return 0;
}
这个程序我看了注释还没看懂,~0的这个0在没有经过(unsigned char)转化的的时候是什么类型的呢?这个程序是怎么执行的呢? 展开
1个回答
展开全部
~0 是0的按位计算。
0 原来是二进制全0
~0 是二进制全1
用16进制表示:
0 == 0x00000000
~0 == 0xffffffff
0 原来是二进制全0
~0 是二进制全1
用16进制表示:
0 == 0x00000000
~0 == 0xffffffff
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询