常量与修饰符
常量
我们在2.2的笔记中提到过常量,也有简略说明了声明常量的方法。
常量是固定值,在程序执行期间不会改变,在定义后无法被修改。
通过在定义时添加
const
关键字。const int a = 2;
常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。
整数常量
进制、前缀与后缀
整数常量默认是十进制,也可以通过前缀指定。0x
或0X
表示十六进制,0
表示八进制
而后缀可以为U
与L
的组合,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
代表假,不能看作0
和1
字符常量
字符常量是括在单引号中。如'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++允许在char
、int
、double
数据类型前添加修饰符,从而改变变量的行为。
范围修饰符
通过short
、long
、longlong
来改变int
变量的范围。
short
使变量表示的范围比int
更小,而long
使其范围更大,longlong
进一步增大了int
表示的范围。
long
也可以用于双精度型(double)变量。
符号修饰符
在整型(int
)变量中,默认便有signed
符号修饰符,这表示变量可以储存负数。
而unsigned
表示变量无法储存负数,但是将变量范围扩大一倍。
同时,符号修饰符也可以应用于字符型,也可以作为long
或short
修饰符的前缀。
通过这个例子,我们可以看出有无符号对整型范围的影响。
#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
表示布尔类型,只有true
和false
两种值。
字符修饰符
有char
和wchar_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