各种类型的常量

一、常量概述

常量是指在程序运行过程中,其值始终不可改变的量。常量直接用符号(文字)来表示,例如 12、3.5、’A’ 都是常量。

二、整数常量

整数常量即以文字形式出现的整数,包括正整数、负整数和零。整数常量的表示形式有十进制、八进制和十六进制三种。

1. 十进制

十进制是我们日常使用最多的进制形式。由 0 到 9 的数字组成,但数字开头不能以 0 开头(0 本身除外)。

合法示例:12、-5、0

非法示例:012(以 0 开头会被编译器识别为八进制)

2. 八进制

八进制由若干个 0 到 7 的数字组成,并且必须以 0 开头,逢八进一。

示例:0123(对应十进制的 83)、00(对应十进制的 0)

注意:由于八进制整数常量一般用来表示无符号整数,所以前面不应带正负号。

3. 十六进制

十六进制由 0 到 9 以及 A 到 F 的字母组成,大小写均可,并且以 0x 或 0X 开头(0 是数字零,x 是字母)。

示例:0x1A(对应十进制的 26)、0xff(对应十进制的 255)、0X2B

注意:同样一般表示无符号整数,前面不应带正负号。

4. 整数常量的后缀

整数常量可以用后缀字母指定类型:

L 或 l:表示长整型。例如 100L、0xFFFFl

U 或 u:表示无符号型。例如 200U、0xABCDu

可以组合使用:100UL 或 100LU 表示无符号长整型。

三、实数常量

实数常量是以文字形式出现的实数,有两种表示方式:一般形式和指数形式。

1. 一般形式

即日常的小数写法,由数字和小数点组成。

示例:12.5、0.0、-3.14159

2. 指数形式

用科学计数法表示,格式为:小数部分 E 指数部分 或 小数部分 e 指数部分。E 或 e 表示 10 的幂。

示例:0.321E-1(表示 0.321 × 10^-1,即 0.0321)

其他示例:1.2e3(表示 1200)、-5.67E+2(表示 -567)

3. 后缀

实数常量默认是 double 类型。如果需要指定为 float 类型,可以加后缀 F 或 f。

示例:3.14f(float 类型)、2.718F(float 类型)

如果要指定为 long double 类型,可以加后缀 L 或 l。

示例:3.14L

四、字符常量

字符常量是用单引号括起来的一个字符。

示例:’a’、’D’、’?’、’1′

注意:单引号本身具有特殊意义(作为界限符),因此如果要表示单引号字符本身,需要使用转义序列:”’

1. 转义字符

有些字符是不可显示字符,无法通过键盘直接输入,例如响铃、换行、制表符、回车等。这些字符需要使用转义序列来表示,以反斜杠 \ 开头。

常见转义字符列表:

\n:换行符

\t:水平制表符

\v:垂直制表符

\b:退格符

\r:回车符

\f:换页符

\a:响铃符

\:反斜杠字符本身

‘:单引号字符

“:双引号字符

?:问号字符

\0:空字符(null,ASCII 码为 0)

2. 用 ASCII 码表示字符

字符还可以使用八进制或十六进制的 ASCII 码值来表示:

八进制形式:\nnn,其中 nnn 是 1 到 3 位八进制数字。

示例:\101(表示字符 ‘A’,因为 ‘A’ 的 ASCII 码是 65,八进制为 101)

十六进制形式:\xnnn,其中 nnn 是十六进制数字。

示例:\x41(同样表示字符 ‘A’)

五、字符串常量

字符串常量简称字符串,是用一对双引号括起来的字符序列。

示例:”abcd”、”china”、”this is a string”

由于双引号是界限符,如果要在字符串中表示双引号字符本身,需要使用转义序列 “。

示例:”please enter “yes” or “no””(输出为:please enter “yes” or “no”)

字符串的存储方式

字符串在内存中的存放形式是:按串中字符的顺序依次存放,每个字符占一个字节,并在末尾自动添加一个 ‘\0’(空字符)作为结束标记。

例如字符串 “AB” 在内存中占用 3 个字节,依次为 ‘A’、’B’、’\0’。

注意区分字符常量和字符串常量:

字符常量 ‘A’ 在内存中占 1 个字节,存放的是字符 A 的 ASCII 码。

字符串常量 “A” 在内存中占 2 个字节,依次为 ‘A’ 和 ‘\0’。

因此 ‘A’ 和 “A” 是不同的,类型也不同。

六、布尔常量

布尔型常量只有两个:

false:表示假

true:表示真

示例:bool isOpen = true; bool isDone = false;

七、代码示例

以下代码演示了各类常量的定义和使用:

#include <iostream>
using namespace std;

int main()
{
    // ===== 整数常量 =====
    int dec = 100;        // 十进制
    int oct = 0123;       // 八进制,值为 83
    int hex = 0x1A;       // 十六进制,值为 26
    long int li = 100L;   // 长整型
    unsigned int ui = 200U; // 无符号整型

    cout << "dec = " << dec << endl;
    cout << "oct = " << oct << endl;
    cout << "hex = " << hex << endl;
    cout << "li = " << li << endl;
    cout << "ui = " << ui << endl;

    // ===== 实数常量 =====
    float f1 = 3.14f;     // float类型
    double d1 = 12.5;     // double类型(默认)
    double d2 = 0.321E-1; // 指数形式,值为 0.0321

    cout << "f1 = " << f1 << endl;
    cout << "d1 = " << d1 << endl;
    cout << "d2 = " << d2 << endl;

    // ===== 字符常量 =====
    char c1 = 'A';
    char c2 = '\n';       // 换行符
    char c3 = '\101';     // 八进制转义,表示 'A'
    char c4 = '\x41';     // 十六进制转义,表示 'A'

    cout << "c1 = " << c1 << endl;
    cout << "c3 = " << c3 << endl;
    cout << "c4 = " << c4 << endl;
    cout << "c2"; // 输出换行

    // ===== 字符串常量 =====
    char str1[] = "hello";
    char str2[] = "please enter \"yes\" or \"no\"";

    cout << "str1 = " << str1 << endl;
    cout << "str2 = " << str2 << endl;

    // ===== 布尔常量 =====
    bool flag1 = true;
    bool flag2 = false;

    cout << "flag1 = " << flag1 << endl; // 输出 1
    cout << "flag2 = " << flag2 << endl; // 输出 0

    return 0;
}Code language: PHP (php)

八、小结

  • 常量是在程序运行过程中值不可改变的量,直接用文字表示。
  • 整数常量支持十进制、八进制(0开头)、十六进制(0x开头),可加后缀 L、U 指定类型。
  • 实数常量有一般形式和指数形式,默认 double 类型,加 F 后缀为 float。
  • 字符常量用单引号括起,不可显示字符用转义序列表示。
  • 字符串常量用双引号括起,末尾自动添加 ‘\0’ 结束符,与字符常量不同。
  • 布尔常量只有 true 和 false 两个值。
Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注