本文共 2098 字,大约阅读时间需要 6 分钟。
算术类型分为两类:
整型(包括字符和布尔类型在内)和浮点型。
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位有效数字 |
类型转换
将对象从一种给定的类型转换为另一种相关类型。
字面值常量
'a'//字符字面值"Hello World"//字符串字面值
变量定义的基本形式是:首先是类型说明符,随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。
当对象在创建时获得了一个特定的值,我们说这个对象被初始化了。
int units_sold=0;int units_sold={ 0};int units_sold{ 0};int units_sold(0);
在C++11标准中,用花括号初始化变量得到全面应用。
这种初始化的形式被称为列表初始化。
如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”。
每个类各自决定其初始化对象的方式。而且,是否允许不经初始化就定义对象也由类自己决定。
为了允许程序拆分成多个逻辑部分来写,C++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译。
为了支持分离式编译,C++语言将声明和定义区分开来。
如果想要声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显示地初始化变量。
C++的复合类型:引用和指针
引用为对象起了另一个名字,引用类型引用另一种类型。
定义引用的时候,程序把引用和它的初始值绑定,而不是把初始值拷贝给引用。
指针是指向另一种类型的复合类型。
指针的值应属以下4种状态之一:
默认状态下,const对象仅在文件内有效
为了解决多文件共享问题,办法是,对于const变量,不管是声明还是定义都添加extern关键字,这样只需要定义一次就可以了。
C++11新标准规定 ,允许将变量声明成constexpr类型以便由编译器来验证变量值是否是一个常量表达式。
传统的方法是使用关键字typedef
新标准规定了一种新方法别名声明:
using SI = Sales_item;//SI是Sales_item的同义词
C++11标准引入了auto类型说明符,用它就能让编译器替我们分析表达式所属的类型。
它的作用是选择并返回操作数的数据类型。在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。
Sales_item的初步定义如下
struct Sale_data{ std::string bookNo; unsigned units_sold=0; double revenue=0.0;};
补充一点:C语言的关键字struct表示结构体,只能有数据成员。
而C++的关键字struct表示类可以有成员函数,它与class的区别在于class的默认访问级别是private而struct的默认访问级别是public。
确保头文件多次包含仍能安全工作的常用技术是预处理器,它由C++语言从C语言继承而来。
C++程序还会用到的一项预处理功能是头文件保护符,头文件保护符依赖于预处理变量。预处理变量有两种状态:已定义和未定义。
#define指令把一个名字设定为预处理变量,
#ifdef当且仅当变量已定义时为真,
#ifndef当且仅当变量未定义时为真。
#endif执行到endif为止。
预处理器变量无视C++语言中关于作用域的规则。
转载地址:http://fhyg.baihongyu.com/