存储信息需要记录3个基本属性:

  • 数据类型
  • 具体值
  • 存在哪里

    3.1.1 变量名

    C++命名规则:

  • 只能使用字母、数字、下划线;

  • 第一个不能是数字;
  • 区分大小写;
  • 不能与关键字重名;
  • 下划线开头和大写字母打头的被保留给编译器实现;
  • 有些平台对长度有限制,一般不超过63个;

    3.1.2 整型

    C++基本整型:char、short、int、long,C++11新增 long long,每种都有符号版本和无符号版本。长度要求:

  • short:至少16位;

  • int:大于等于short;
  • long:至少32位且大于等于int;
  • long long:至少64位且大于等于long;

可以使用 sizeof 运算符返回类型或变量长度,头文件 climits(旧的为 limits.h)包含了整型限制信息。

3.1.3 整型 short、int、long、long long

以下代码展示了如何使用这些工具:

  1. #include <iostream>
  2. #include <climits>
  3. using namespace std;
  4. int main()
  5. {
  6. //赋值
  7. int n_int = INT_MAX;
  8. short n_short = SHRT_MAX;
  9. long n_long = LONG_MAX;
  10. long long n_llong = LLONG_MAX;
  11. //输出长度
  12. cout << "int is " << sizeof(n_int) << " bytes." << endl;
  13. cout << "short is " << sizeof(n_short) << " bytes." << endl;
  14. cout << "long is " << sizeof(n_long) << " bytes." << endl;
  15. cout << "long long is " << sizeof(n_llong) << " bytes." << endl;
  16. //输出最大值
  17. cout << "Max int is " << n_int << endl;
  18. cout << "Max short is " << n_short << endl;
  19. cout << "Max long is " << n_long << endl;
  20. cout << "Max long long is " << n_llong << endl;
  21. //输出一个字节占的位数
  22. cout << "Bits per byts = " << CHAR_BIT << endl;
  23. }

注意:如果系统不支持 long long,应该删除该类型的代码。

C/C++的初始化风格不同:

  1. int num = 101; //C风格
  2. int num(101); //C++风格

C++11 新增另一种初始化方式,用于数组和结构:

  1. int num{};
  2. int num = {10};
  3. int num = {}; //这种情况将被初始化为零

3.1.4 无符号类型

例如,short 范围是 -32768~32767,无符号版本范围是 0~65535。仅当值非负时才使用无符号类型。

3.1.5 选择整型类型

C++提供了很多整型,选择哪个呢?通常 int 被设置为计算机最为“自然”的长度,处理效率最高。如果内存紧张选择 short,如果非负选择无符号版本。

3.1.6 整型字面值

整型字面值(常量)是显式地书写的常量。C++能够以三种计数方式书写整数:

  • 十进制:第一位是1~9,如28;
  • 八进制:第一位是0,如028;
  • 十六进制:0x或0X开头,如0x28;

使用 count 输出这三种格式的显示值:(dec、hex、oct)

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int num = 42;
  6. cout << "十进制 " << num << endl;
  7. cout << hex;
  8. cout << "十六进制 " << num << endl;
  9. cout << oct;
  10. cout << "八进制 " << num << endl;
  11. }

3.1.7 C++如何确定常量类型?

例如:

  1. cout << 1492 << endl;

程序将 1492 存储为 int、long 还是其他?默认为 int。

数字常量后面可以加后缀来表示类型:

  • l、L后缀表示 long 常量;
  • u、U后缀表示 unsigned int 常量;
  • ul、uL、UL、lu、lU、LU后缀表示 unsigned long 常量;
  • ll、LL后缀表示 long long 常量;

    3.1.8 char 类型:字符、小整数

    虽然 char 常用来处理字符,但也可以用作比 short 更小的整型。

    3.1.9 bool类型

    C中没有布尔类型,C++有了。任何非零值都是 true,包括负数。