zoukankan      html  css  js  c++  java
  • C语言整型提升

    #include <stdio.h>
    
    int main(void) { 
        //-1为整数,内存中存储为四个字节
        //-1原码:10000000000000000000000000000001
        //-1反码:11111111111111111111111111111110
        //-1补码:11111111111111111111111111111111
        char a = -1;//整型-1赋给char a 时进行截取操作,此时a存储为1 1111111
        signed char b = -1;//整型-1赋给signed char b 时进行截取操作,此时b存储为1 1111111
        //终上所述,char默认为signed char
        unsigned char c = -1;//整型-1赋给 unsigned char c 时进行截取操作,此时c存储为1 1111111
        
        //输出结果为:a=-1,b=-1,c=255
        //输出格式为%d,即整型形式,所以由char到int需要实现整型提升
        //提升过程:无符号通过添加0进行提升,有符号通过添加1提升。
        //即有符号的a,b提升后结果一样为:由1 1111111 提升为 11111111111111111111111111111111(补码形式)==》转化为原码:10000000000000000000000000000001 = -1
        //即无符号的c提升后结果一样为:由1 1111111 提升为00000000000000000000000011111111(无符号或者说正数的原码反码补码都一致)=255
        printf("a=%d,b=%d,c=%d",a,b,c);
        return 0;
    }

     注:1.截断规则

    例子:1000 1101截断成四位===》 1101(舍弃前面多余的)

    2.计算机中运算是通过补码进行运算,但是结果是转换为原码输出。

    穷则独善其身,达则兼济天下……
  • 相关阅读:
    如何基于Azure平台实现MySQL HA(方法论篇)
    如何对Azure磁盘性能进行测试
    Azure底层架构的初步分析
    聊聊Azure的安全性
    关于Azure带宽的测试
    JavaScript 优化
    SQL时间段查询
    win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法
    putty 使用方法,中文教程
    怎样才能专心工作
  • 原文地址:https://www.cnblogs.com/hmy-666/p/14401099.html
Copyright © 2011-2022 走看看