C++变量类型的那些事
2015-04-05 12:27
176 查看
C变量类型的那些事
如何选择类型
类型转换
字面值常量
整形和浮点型的字符常量
指定字面值的类型
有些类型分为带符号的(signed)和无符号的(unsigned)两种。一般情况下,缺省符号都是signed,如int,short,long等都是有符号的,值得一提的是,与其他整形不同,字符型char和signed char并不一样。char具体是signed还是unsigned由编译器决定。
如果你需要一个不大的整数,可有明确地指定他的类型是signed char或者是unsigned char。
执行浮点数运算时选用double,引文float通常精度不够而且双精度和单精度的计算代价相差无几。事实上,对于某些机器来说,双精度运算甚至更快一些。long double提供的精度在一般情况下是没有必要的,而且带来的时耗也不容忽视。
当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值取模后的余数。
当我们赋给带符号类型一个超出它表示范围的值时,结果是未定义的(undefined)。此时,程序可能继续工作,可能崩溃,也可能生成垃圾数据。
写程序时一定要考虑程序的可移植性,例如在不同的平台上int的长度是不一样的,如果我们把int的尺寸看成是一个确定不变的已知值,那么这样的程序就是不可移植的(nonportable)。
浮点型字面值表现为一个小数或以科学计数法表示的指数:
3.1415 3.14159E0 0. 0e0 .001
默认情况下,数据类型是double。当然可以用前缀和后缀来说明。
整数
浮点数
如何选择类型
类型转换
字面值常量
整形和浮点型的字符常量
指定字面值的类型
C++变量类型的那些事
同样的变量类型名在不同的机器 下的含义不一定相同,下表C++标准规定的变量所对应的的最小尺寸。类型 | 含义 | 最小尺寸 |
---|---|---|
bool | 布尔类型 | 未定义 |
char | 字符 | 8位 |
wchar_t | 宽字符 | 16位 |
char16_t | Unicode字符 | 16位 |
char32_t | Unicode字符 | 32位 |
short | 短整型 | 16位 |
int | 整型 | 16位 |
long | 长整型 | 32位 |
long long | 长整型 | 64位 |
float | 单精度浮点型 | 6位有效数字 |
double | 双精度浮点型 | 10位有效数字 |
long double | 扩展精度浮点型 | 10位有效数字 |
如何选择类型
这儿提几点建议:如果你需要一个不大的整数,可有明确地指定他的类型是signed char或者是unsigned char。
执行浮点数运算时选用double,引文float通常精度不够而且双精度和单精度的计算代价相差无几。事实上,对于某些机器来说,双精度运算甚至更快一些。long double提供的精度在一般情况下是没有必要的,而且带来的时耗也不容忽视。
类型转换
当我们把一个整数值赋给浮点数类型时,小数部分记为0。如果该整形所占的空间超过了浮点数的容量,精度可能会丢失。当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值取模后的余数。
当我们赋给带符号类型一个超出它表示范围的值时,结果是未定义的(undefined)。此时,程序可能继续工作,可能崩溃,也可能生成垃圾数据。
写程序时一定要考虑程序的可移植性,例如在不同的平台上int的长度是不一样的,如果我们把int的尺寸看成是一个确定不变的已知值,那么这样的程序就是不可移植的(nonportable)。
字面值常量
一个形如42的值被称作位字面值常量(literal),这样的值一望而知。每个字面值常量都对应一个数据类型,字面值常量的的形式和值决定了它的数据类型。整形和浮点型的字符常量
默认情况下,整数的十进制字面值对应的是带符号的数据类型,而八进制和十六进制则不确定。十进制的字面类型是int,long,longlong中尺寸最小的那一个,当然前提是这种类型要容纳下当前的值。而八进制则是int,unsigned int,long,unsigned long,longlong,unsigned long long 中尺寸最小者。浮点型字面值表现为一个小数或以科学计数法表示的指数:
3.1415 3.14159E0 0. 0e0 .001
默认情况下,数据类型是double。当然可以用前缀和后缀来说明。
指定字面值的类型
前缀 | 类型 |
---|---|
u | char16_t |
U | char32_t |
L | wchar_t |
u8 | char |
后缀 | 最小匹配类型 |
---|---|
u or U | unsigned |
l or L | long |
ll or LL | long long |
后缀 | 类型 |
---|---|
f or F | float |
l or L | long double |
相关文章推荐
- C++临时变量的另类应用:基于iostream的类型安全的log接口设计
- windows平台上向64位移植c/c++的变量类型大小变化
- C++学习笔记一 变量与基本类型
- 解析C++普通局部变量与指针类型的对象变量的应用区别
- C++ int型及其他值类型变量转string方法
- C/C++每日一课 >> [原创]细说如何确定一个变量的类型(2005-04-25)
- C++ Peimer 第2章-变量和基本类型习题答案
- c++基础 C++的变量和基础类型
- 第01章 CORE C++_C++ 基本结构_注释_输出语句_输入语句_初始化_条件控制_ASCII码值_转义字符_常量_变量_类型长度_运算符
- C++ primer第二章:变量和基本类型
- c++ 如何获得一个变量的类型名称?
- 为什么C++里所有类型的变量都一整型输出???请高手帮忙, 谢谢啦!!!!
- c++数据类型--文字常量、变量
- C++学习笔记(二)——变量和基本类型
- C++数据类型-常量和变量
- C++复习 02 变量和基本类型
- C++临时变量的另类应用:基于iostream的类型安全的log接口设计
- C++中将字符串作为参数传递,应采用什么类型变量
- c/c++ 中的 sizeof 运算符和数组类型的变量与形参
- C++ Peimer 第2章-变量和基本类型习题答案