C语言数据类型的表示范围
来源:互联网 发布:麦迪场均数据 编辑:程序博客网 时间:2024/05/01 14:45
1、C和C++语言中基本的数据类型有:字符型(char),整形(short, int, long), 浮点型(float, double)
类型
字节数
类型
字节数
char
1
short
2
int
根据系统而定,可能是2或4
long
4
float
4
double
8
同时字符型和整形还可以继续分为带符号的和不带符号的,默认情况下都是带符号的,如果想使用不带符号的,则使用时带上 unsigned说明即可,如果是带符号的,那么最高位将表示符号位,最高位为0表示为正数,最高位为1表示为负数,因此根据这个可以得到不同类型在分别带符号和不带符号的情况下表示的数据范围:
类型
范围
类型
范围
(signed)char
-128——127
unsigned char
0——255
(signed) short
-32768——32767
unsigned short
0——65535
(signed ) int
-32768——32767
unsigned short
0——65535
(signed) long
-2147483648——2147483647
unsigend long
0——4294967295
float
-3.4*10-38——3.4*1038
double
-1.7*10-308——1.7*10308
2、对于字符型和整形特别需要注意其表示的范围,如果运算导致超出其范围的处理,如以下的代码:
- int main()
- {
- signed char ch = 127;
- ch += 1;
- printf("%d\n", ch);
- return 0;
- }
输出结果为:-128,注意,定义ch时赋予的值为127,已经是char能表示的最大数,其最终结果-128的来历是这样的:
第一步:首先127在计算机中用二进制表示为:01111111;
第二步:01111111 + 00000001 = 10000000;
第三步:由于ch是带符号的,当最高位为1时,表示是负数,而负数的计算机中是利用补码来存储的,回忆计算负数补码的方法(首先取负数的绝对值,然后求二进制,对二进制取反,在对取反后的值加1,即为负数的补码);
第四步:于是根据求补码的反步骤,我们来求最原始的负数,由于本题中补码为10000000,首先10000000 - 00000001 = 01111111,然后对01111111取反为10000000,10000000 = 128,由于本身是负数,即ch为-128.
再看以下一段代码:
- int main()
- {
- unsigned char ch = 255;
- ch += 1;
- printf("%d\n", ch);
- return 0;
- }
输出结果为:0;
其分析为:首先ch = 255提升为整形,在计算机的存储为:(000....)11111111,然后(000....)11111111+1 = (000...)0001 00000000;然后再将最后的八位二进制截取给ch,由于最后八位全是0,因此ch = 0了。
同理:对于遇到整形int short, long等出现上述情况时,我们也可以这样分析得到结果。
本文转自:http://blog.chinaunix.net/uid-25132162-id-375564.html 谢谢!
- C语言数据类型的表示范围
- C语言中数据类型的表示范围
- C语言中各数据类型表示范围
- C语言各种数据类型表示范围
- c++:各种数据类型表示的范围
- c语言的数据类型范围
- C语言数据类型范围
- c语言的数据类型 范围 解释
- 小议C语言中数据类型的范围
- C语言的数据类型及范围
- C++ 数据类型的表示范围
- C++ 数据类型的表示范围
- 常用数据类型的表示范围
- c语言中int的表示范围是-32768~32767!
- C语言超出类型数值范围的表示方法
- 转型各数据类型表示的范围理解
- java中的byte数据类型表示的范围
- OpenCV基本数据类型表示的范围大小
- C++ 虚函数表解析
- 【Oracle】Oracle-Linux下数据导出脚本实现(四)
- 超值广州PHP培训课程尽在广州传智播客
- View的绘制完成通知
- Spring3任务调度
- C语言数据类型的表示范围
- 基本语言细节--《深度探索C++对象模型》--(5)Semantics of Construction,Destruction,and Copy-总结点
- 没有基础也可以参加广州传智播客.NET培训
- 安卓练习
- copy,mutableCopy 理解
- 整数划分(2)
- nyoj-852-蛇形填数(二)
- “你最喜欢的程序员漫画”精选
- erlang shell 命令中文使用说明