C/C++ 数据类型扩展
来源:互联网 发布:java项目的需求分析 编辑:程序博客网 时间:2024/06/06 07:00
数据类型扩展:
定义的数据类型的值与定义的数据类型无关,只与最后输出形式有关。
如:char c=128;printf("c=%u",c),c=4294967168(0xFFFFFF80); printf("c=%d",c),输出为c=-128;
char c=64;printf("c=%u",c),c=64(0x00000040); printf("c=%d",c),输出为c=64;
unsigned short i=10;printf("~i=%u",~i)~i=4294967285(0xFFFFFFF5); printf("~i=%d",~i),~i=-11;
其中涉及到数据类型的扩展,符号扩展规律就是“对于无符号整型数据,要扩展成符号位的话,就是将扩展位补零,其他位保持不变。但对于有符号整型数据的符号扩展规律就是:原来符号位为1时,符号扩展位补1;原来符号位为0时,符号扩展位补0;其他位保持不变。”
定义为字符型时,先扩展为int型:char型扩展属于有符号扩展,c=128=0x80,最高位也就是符号位为1,扩展成int型后c=0xFFFFFF80;c=64=0x40,符号位为0,扩展成int型后c=0x00000040;这里就是原来符号位为1时,符号扩展位补1;原来符号位为0时,符号扩展位补0;其他位保持不变
在计算机中采用补码保存数据,若为无符号输出或最高位为0(正数),原码与补码相同,若为有符号输出,看最高位,若为1,表示为负数,求取原码,c的原码=补码按位取反(除符号位外)+1(注:原码-补码之间的相互转换规则相同)=0x80000080;所以输出为-128;
定义为无符号短整型时,先扩展为int型:i=10=0x0A,扩展成int型,符号扩展位为0,扩展后i=0x0000000A;~i=0xFFFFFFF5;原码=0x8000000B==-11;
- C/C++ 数据类型扩展
- oracle 12c:新特性-扩展数据类型
- C#:对Int32数据类型直接增加位测试扩展方法
- 采用扩展方法实现数组中数据类型转换(c#)
- C 扩展
- c 扩展
- 用C的数据类型宽度扩展来解释char c=128;printf("%d",c);问题
- C 数据类型
- C 数据类型
- c--数据类型
- C 数据类型
- C---数据类型
- c--数据类型
- 数据类型(C#)
- C#-数据类型
- C数据类型
- C数据类型
- C#--数据类型
- [转]MySQL性能调优
- MPTCP 源码分析(三) 子路径选择
- Java synchronized的理解
- 求n!末尾0的个数
- Harris角点检测算法原理
- C/C++ 数据类型扩展
- LVS 负载均衡集群搭建
- 【设计模式】结构型模式之桥接Bridge
- POJ 2516 Minimum Cost 最大流的最小费用(不要拆点!)
- 【PAT】(乙级)1001. 害死人不偿命的(3n+1)猜想 (15)
- The Log-Structured Merge-Tree
- Android Studio中查看类的继承关系
- 渗透测试工具实战技巧合集
- OC语法:实现拷贝的方法