zoukankan      html  css  js  c++  java
  • 1.3类型转换

    *  当把占字节较小的数据赋值给占字节较大的数据时,可能出现以下两种情况。

    *  第1种情况,当字节较大数是无符号数时,转换时新扩充的位被填充成0

    char b = 10;
    unsigned short a = b;
    printf("%u",a);


    这样赋值后,变量a中输出的值是10,原因如下:


    * 当字节较大数是有符号数时,转换时新扩充的位被填充成符号位

            unsigned char b = 255;
             short a = b;
             printf("%d",a);


                       这样赋值后,变量a输出的值是-1,变量a扩充的高8位,根据变量b的最高位1都被填充成了1,所以数值由正数变成了负数,因为变量a的最高位符号位是1,至于为什么16个1表示的是-1,涉及到二进制数的原码和补码问题,大家回顾下补码。转换图示如下:



    转载请注明出处。https://www.cnblogs.com/jyfootprint/p/9457346.html
  • 相关阅读:
    51Nod1119
    stoi
    坑爹大质数
    USACO07OPEN Cheapest Palindrome
    USACO08NOV Mixed Up Cows
    USACO12FEB Nearby Cows
    SCOI2009 粉刷匠
    USACO16OPEN 248
    POI2014 PTA-Little Bird
    USACO17FEB Why Did the Cow Cross the Road I G
  • 原文地址:https://www.cnblogs.com/jyfootprint/p/9409958.html
Copyright © 2011-2022 走看看