第三章 处理数据
3.1 简单变量
3.1.1 变量名
①名称的第一个字符不能是数字
(?)②以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现用作全局标识符
③变量命名技巧–添加描述变量类型或内容的前缀
如nMyWeight(整型), strname(字符型), p(指针), b(布尔型)
3.12 整型
①climits头文件
该头文件中规定了简单变量类型的取值范围,如INT_MAX,INT_MIN等等,可以引用该头文件后,查找相关类型范围
②三种初始化方法
第一种: int a = 1;
第二种:int a = (1) ;或 int a(1);
第三种:int a = {1}; 或 int a{1};
3.1.3 无符号类型
当无符号类型超越了限制时,其值将为范围另一端的取值,比如unsigned short a = 0; a = a - 2;
unsigned short 的最大值为65535 , 此时a将输出为65534
但是C++并不保证有符号整型超越限制时不出错
3.1.4 整型字面值
①C++使用前1/2位来标识数字常量的基数
如果第一位为1-9则为十进制,第一位是0第二位是0~7,则为八进制,前两位为0x或0X,则为十六进制
②在默认情况下,cout以十进制显示整数,而不管这些整数在程序中是如何书写的,但是iostream也提供了控制符dec(十进制),hex(十六进制),oct(八进制),来指示以哪种格式显示整数
cout << hex;
cout ......
cout << oct;
cout .....
3.1.5 C++如何确定常量的类型
①除非有理由存储为其他类型(如使用了特殊的后缀来表示特定的类型,或者值太大不能存储为int),否则C++将整型常量存储为int类型
②后缀
l/L—long
ul/UL—unsigned long
ll/LL----long long
ull/uLL/ULL/Ull----unsigned long long 等等
③长度
对于不带后缀的十进制:依次为int,long,long long
对于不带后缀的八进制或十六进制:依次为int, unsigned int , long, unsigned long, long long, unsigned long long
3.1.6 char类型 :字符和小整数
①也属于整型,比较特殊而已
②cout.put()
类ostream有一个成员函数put(),用来输出字符,count对象可以通过成员运算符"."来调用该成员函数
③三种换行方式
cout << endl cout << ‘\n’ cout << “\n”
如果在输出字符串中换行,使用\n比较方便
如果就输出一个数字,使用endl比较方便
3.1.7 bool类型
任何数字值或指针值都可以被隐式转换为bool值
3.2 const限定符
应在声明中对const初始化,如果在声明时没有对const初始化,则声明的常量的值是不确定的,且无法修改
之后定义常量,不推荐用#define 应该使用const
3.3 浮点数
3.3.1 浮点数的表示
①标准小数点表示法
float 12.3456;
②E表示法
8.3333E-8
E表示法确保数字以浮点格式存储,即使没有小数点!
既可以使用E也可以使用e
3.3.2 浮点类型
cout.setf(ios_base::fixed, ios_base::floatfield); //参数ios_base::fixed, ios_base::floatfield是通过iostream来提供的常量
cout << 1.00000 << endl; //cout会删除结尾的0 调用cout.setf()会覆盖这种行为
3.3.3 浮点常量
希望常量是float,则使用f或F后缀
希望常量是long double, 则使用L后缀
浮点常量在默认情况下为double类型
3.3.4 浮点数优缺点
浮点数表示范围大,但是也存在问题
float e= 2.34E+22F;
float f = e + 1.0F;
cout << f - e;
输出结果为0.因为2.34E+22F是一个小数点左边有23位的数字,而float类型能表示数字的前6或7位,因此修改第23位,对这个值不会有任何影响
运算符重载的定义:使用相同的符号进行多种操作
3.3.5 类型转换
①以{}方式初始化时进行的转换
C++11将使用{}的初始化方式称为列表初始化,因为这种初始化常用于给复杂的数据类型提供值列表
这种初始化方式对类型转换的要求更严格,它不允许缩窄,比如不允许 long类型赋值给int类型
②强制类型转换
方法一:(typeName) value;
方法二:typeName (value);