数据类型转换的内存原理

// 数据类型转换的内存原理.cpp : Defines the entry point for the console application.
//
//1个字节就为8位十六进制
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
/*
低字节往高字节 按符号位去填充


*/
int main1(int argc, char* argv[])
{
char ch=1;
// 0000 0001
int  num=ch;
// 0000 0000 0000 0000 0000 0000 0000 0001
//按符号位填充
printf("%p,%p\n",&ch,&num);
return 0;
}
void main2()
{
char ch=-1;
//原码:1000 0001 
//反码:1111 1110 原码取反符号位不要变
//补码:1111 1111 反码+1
   //:  F    F


int num=ch;
//原码:1000 0000 0000 0000 0000 0000 0000 0001 
//反码:1000 1111 1111 1111 1111 1111 1111 1110
//补码:1111 1111 1111 1111 1111 1111 1111 1111
//:  F    F    F    F    F    F    F    F
printf("%d,%d\n",ch,num);
printf("%p,%p\n",&ch,&num);


}
 //以上都是有符号的数据
void main3()
{
//大数据填充小数据就会有误 int to char 就会保证数据的不正确
unsigned  char data1=255+1;
printf("我有%d万元\n",data1);
//printf("我有%d万元\n",data+1); //这是不会溢出的
//%d最大输出的值是int范围所以不溢出
}


void main4()
{


unsigned char ch=1;
// 0000 0001 


unsigned int i=ch;
// 0000 0000 0000 0000 0000 0000 0000 0001 
//无符号的CPU直接填充
printf("%d,%d\n",ch,i);
}
void main()
{
unsigned int i=-1; //赋值号会将二进制直接赋值给i
//int i=4294967295;
printf("%d\n",i);//-1按照%d就会输出负数所以就是-1
printf("%u\n",i);//无符号直接输出int的最大值

for (int a=1; a<i; a++) //如果i++就会变成0
{
system("calc");
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值