关于char强制转换成int到底是用0还是用1补位的猜想与检验
最近学C语言发现char强制转换时值会完全不同,而且变化很大,于是决定写代码测试一下。
先检验一下char型的-3和3在内存中分别怎么表示
——用到的函数
void PrintBit(char x)//用于输出char型在内存中的二进制保存值
{
int i=0;
int n=sizeof(char)*CHAR_BIT;
int mask =1<
for(i=1;i<=n;i++)
{
putchar(!(x&mask)?'0':'1');
x<<=1;
if(!(i%CHAR_BIT)&&i
{
putchar(' ');
}
}
}
void InPrintBit(int x)//用于输出int型在内存中的二进制保存值
{
int i=0;
int n=sizeof(int)*CHAR_BIT;
int mask =1<
for(i=1;i<=n;i++)
{
putchar(!(x&mask)?'0':'1');
x<<=1;
if(!(i%CHAR_BIT)&&i
{
putc