数据类型转换的内存原理

    xiaoxiao2025-05-28  8

    // 数据类型转换的内存原理.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"); } }
    转载请注明原文地址: https://ju.6miu.com/read-1299359.html
    最新回复(0)