常量与修饰符

常量

我们在2.2的笔记中提到过常量,也有简略说明了声明常量的方法。

常量是固定值,在程序执行期间不会改变,在定义后无法被修改。

通过在定义时添加const关键字。

const int a = 2;

常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。

整数常量

进制、前缀与后缀

整数常量默认是十进制,也可以通过前缀指定。0x0X表示十六进制,0表示八进制

而后缀可以为UL的组合,U表示unsigned无符号整数,L表示long长整数。

85         // 十进制
0213       // 八进制 
0x4b       // 十六进制 
30         // 整数 
30u        // 无符号整数 
30l        // 长整数 
30ul       // 无符号长整数
078         // 非法的:8 不是八进制的数字
032UU       // 非法的:不能重复后缀

浮点常量

浮点常量由整数部分、小数点、小数部分和指数部分组成。必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的。

3.14159       // 合法的 
314159E-5L    // 合法的 
510E          // 非法的:不完整的指数
210f          // 非法的:没有小数或指数
.e55          // 非法的:缺少整数或分数

布尔常量

true代表真,false代表假,不能看作01

字符常量

字符常量是括在单引号中。如'x'等……而常量以L开头时,则应储存在宽字符常量(wchar_t)类型的变量中。其中,一些特定的字符前加上斜杠\,代表特殊的转义序列。

转义序列

  • \\:\ 字符

  • \':' 字符

  • \":"字符

  • \?:?字符

  • \b:退格

  • \f:换页

  • :换行

  • :回车

  • :水平制表符

  • \v:竖直制表符

例:这句会输出Hello World

cout << "Hello\tWorld\n\n";

字符串常量

字符串字面值或常量是括在双引号 "" 中的。通过\作为分隔符来换行。

以菜鸟教程给出的例子为例,这展示了\作为换行符的作用效果。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string greeting = "hello, runoob";
    cout << greeting;
    cout << "\n";     // 换行符
    string greeting2 = "hello, \
                        runoob";
    cout << greeting2;
    return 0;
}

定义常量

在2.2中,提到过使用const来定义常量,现在还可以使用#define预处理器来定义一个常量。

const定义常量

const type variable = value;

#define预处理器定义常量

#define identifier value

实例:定义常量

要求:通过#define预处理器定义一个矩形的长为a = 50,b = 30,并输出矩形的面积。

#include <iostream>
using namespace std;
#define A 50
#define B 30

int main(){
    cout << A*B;
    return 0;
}

注意

把常量定义为大写字母形式更为推荐。

修饰符类型

早在2.1的笔记中,就有提到修饰符。

C++允许在charintdouble数据类型前添加修饰符,从而改变变量的行为。

范围修饰符

通过shortlonglonglong来改变int变量的范围。

short使变量表示的范围比int更小,而long使其范围更大,longlong进一步增大了int表示的范围。

long也可以用于双精度型(double)变量。

符号修饰符

在整型(int)变量中,默认便有signed符号修饰符,这表示变量可以储存负数。

unsigned表示变量无法储存负数,但是将变量范围扩大一倍。

同时,符号修饰符也可以应用于字符型,也可以作为longshort修饰符的前缀。

通过这个例子,我们可以看出有无符号对整型范围的影响。

#include <iostream>
using namespace std;
 
/* 
 * 这个程序演示了有符号整数和无符号整数之间的差别
*/
int main()
{
   short int i;           // 有符号短整数
   short unsigned int j;  // 无符号短整数
 
   j = 50000;
 
   i = j;
   cout << i << " " << j;
 
   return 0;
}

其输出为-15536 50000

浮点修饰符

float表示单精度浮点数,double表示双精度浮点数

布尔修饰符

bool表示布尔类型,只有truefalse两种值。

字符修饰符

charwchar_t两种,后者表示宽字符类型,可以用于储存Unicode字符。

一些修饰符定义变量的例子

以下是通过修饰符定义变量的例子。其中,也可以通过速记符号来声明变量。通过不写int,只写修饰符从而隐含int

signed int num1 = -10; // 定义有符号整型变量 num1,初始值为 -10
unsigned int num2 = 20; // 定义无符号整型变量 num2,初始值为 20

short int num1 = 10; // 定义短整型变量 num1,初始值为 10
long int num2 = 100000; // 定义长整型变量 num2,初始值为 100000

long long int num1 = 10000000000; // 定义长长整型变量 num1,初始值为 10000000000

float num1 = 3.14f; // 定义单精度浮点数变量 num1,初始值为 3.14
double num2 = 2.71828; // 定义双精度浮点数变量 num2,初始值为 2.71828

bool flag = true; // 定义布尔类型变量 flag,初始值为 true

char ch1 = 'a'; // 定义字符类型变量 ch1,初始值为 'a'
wchar_t ch2 = L'你'; // 定义宽字符类型变量 ch2,初始值为 '你'

Last updated