C++ 什么是令牌
什么是令牌
C++程序由令牌组成,令牌是最小的单元。 令牌可以是关键字、标识符、常量、操作符或标点符号之一。
C++中有6种类型的令牌:
- 关键字
- 标识符
- 常量
- 字符串
- 特殊符号
- 操作符
1.关键字
在C++中,关键字是保留的特定单词,不能用作标识符 。关键字是C++语言的重要组成部分,用于执行特定的任务或操作。
C++中有95个关键字:
alignas (since C++11) | alignof (since C++11) | and |
---|---|---|
and | and_eq | asm |
atomic_cancel (TM TS) | atomic_commit (TM TS) | atomic_noexcept (TM TS) |
auto(1) | bitand | bitor |
bool | break | case |
catch | char | char16_t (since C++11) |
char32_t (since C++11) | class(1) | compl |
concept (since C++20) | const | constexpr (since C++11) |
const_cast | continue | co_await (coroutines TS) |
co_return (coroutines TS) | co_yield (coroutines TS) | decltype (since C++11) |
default(1) | delete(1) | do |
double | dynamic_cast | else |
enum | explicit | export(1) |
extern(1) | false | float |
for | friend | goto |
if | import (modules TS) | inline(1) |
int | long | module (modules TS) |
mutable(1) | namespace | new |
noexcept (since C++11) | not | not_eq |
nullptr (since C++11) | operator | or |
or_eq | private | protected |
public | register(2) | reinterpret_cast |
requires (since C++20) | return | short |
signed | sizeof(1) | static |
static_assert (since C++11) | static_cast | struct(1) |
switch | synchronized (TM TS) | template |
this | thread_local (since C++11) | throw |
true | try | typedef |
typeid | typename | union |
unsigned | using(1) | virtual |
void | volatile | wchar_t |
while | xor | xor_eq |
如果您尝试将一个保留关键字作为标识符使用,编译器将会产生一个错误,因为它不知道如何处理该关键字。
以下是一个尝试将保留关键字作为标识符使用的程序示例:
#include
using namespace std;
int main()
{
// Define a variable named "int" of type int and initialize it to 10
int int = 10;
// Print the value of the "int" variable
cout << "The value of the variable " << int << " is " << int << "." << endl;
return 0;
}
输出:
解释:
当我们编译以上代码时,编译器会产生一个错误。这个错误是因为int关键字不能用作标识符。你需要选择一个不同的变量名来避免这个错误。
总结:
保留关键字是C++语言的重要组成部分,不能用作标识符。你必须为代码中的变量、函数和其他对象选择不同的名称。
2. 标识符
C++中,标识符是给变量、函数或者其他对象起的名称。标识符用于在程序中引用这些实体,它们可以由字母、数字和下划线组成。然而,在选择标识符时必须遵守一些规则:
- 第一个字符必须是字母或者下划线。
- 标识符不能与关键字相同。
- 标识符不能包含任何空格或特殊字符,除了下划线。
- 标识符区分大小写,也就是说变量名“myVariable”和“myvariable”是不同的。
下面是一些在C++中有效和无效的标识符的示例:
- 有效:
- my_variable
- student_name
- balance_due
- 无效:
- my variable(包含空格)
- student#(包含特殊字符)
- int(与关键字相同)
为了让你的代码更易读和理解,选择有意义和描述性的标识符非常重要。
示例:
#include
using namespace std;
int main()
{
// Define a variable named "age" of type int and initialize it to 25
int age = 25;
// Define a variable named "name" of type string and initialize it to "John Doe"
string name = "John Doe";
// Print the value of the "age" and "name" variables
cout << "My name is " << name << " and I am " << age << " years old." << endl;
return 0;
}
输出:
说明:
在这个程序中,变量的age和name是标识符,用于存储和访问变量的值。标识符age用于存储一个人的年龄,标识符name用于存储这个人的名字。请注意,标识符被选择为描述性和有意义的,这使得代码更容易阅读和理解。如果您遵循前面讨论的标识符命名规则,您可以在C++程序中使用任何有效的标识符。
3. 常量
在C++中,常量是在程序执行过程中不能改变的值。常量通常代表代码中频繁使用的固定值,例如pi的值或数组的最大大小。
要在C++中定义一个常量,您需要使用const关键字,后面跟上数据类型和常量的名称,然后用一个值进行初始化。一旦定义了常量,其值就不能被改变。下面是一个示例:
const double PI = 3.14159;
在这个示例中,常量PI的类型为double,并且用pi的值进行初始化。您可以在代码中的任何需要使用pi值的地方使用常量PI。
在代码中使用常量而不是普通变量是很重要的,特别是当您需要表示固定值时。这可以使您的代码更易读、更易维护,并防止意外更改常量的值。
示例:
#include
using namespace std;
int main()
{
// Define a constant named "PI" of type double and initialize it to 3.14159
const double PI = 3.14159;
// Define a variable named "radius" of type double and initialize it to 10.0
double radius = 10.0;
// Calculate the area of a circle with radius 10.0
double area = PI * radius * radius;
// Print the area of the circle
cout << "The area of the circle is " << area << "." << endl;
return 0;
}
输出:
解释 :
在这个程序中,常量PI被用来表示π的值。使用const关键字定义了PI的值,并用pi的值进行了初始化。常量PI随后被用来计算圆的面积,乘以圆的半径的平方来确定面积。
请注意,常量PI与普通变量使用方式相同,但一旦定义就不能更改。这使其成为表示代码中经常使用的固定值的理想选择。
你可以在C++程序中使用常量来表示不能更改的固定值。这可以使你的代码更易读、易维护,并防止对常量值的意外更改。
4. 字符串
在C++中,字符串是表示文本的字符序列。 字符串在C++程序中常用于存储和操作文本数据。
要在C++中使用字符串,必须在程序的开头包含<string>
头文件。这将提供对string类的访问,该类用于在C++中创建和操作字符串。以下是一个示例:
#include
#include
using namespace std;
int main()
{
// Define a string variable named "message" and initialize it with a string value
string message = "Hello, world!";
// Print the value of the "message" variable
cout << message << endl;
return 0;
}
输出:
解释:
在这个示例中,字符串类创建了一个名为message的字符串变量。message变量被初始化为字符串”Hello, world!”,然后使用cout对象将其输出到屏幕上。
您可以使用字符串类执行各种字符串操作,例如串联字符串、比较字符串、搜索子字符串等等。如需了解更多信息,请参考字符串类的文档。
5. 特殊符号
在C++中,有几个特殊符号用于不同的目的。&符号用于表示变量的地址,而~符号用于表示按位取反运算符。一些常见的特殊符号包括*
符号,用作乘法和指针运算符。
#
符号用于表示预处理指令,这是一种在代码编译之前由预处理器处理的特殊指令。百分号%作为模运算符,用于在一个数除以另一个数时查找余数。
竖线|用于表示按位或运算符,而插入符^用于表示按位异或运算符。感叹号!用于表示逻辑非运算符,用于对布尔值取反。
除了这些符号,C++还有许多其他特殊字符,用于各种目的。例如,反斜杠/用于转义特殊字符,双引号”用于括起字符串字面值,单引号’用于括起字符字面值。
总的来说,C++中的特殊符号是语言的重要组成部分,并在各种不同的上下文中用于执行各种操作。
示例:
#include
using namespace std;
int main() {
int a = 5;
int b = 10;
int c = a * b; // Use of the asterisk (*) as the multiplication operator
cout << "The product of " << a << " and " << b << " is " << c << endl;
int *ptr = &a // Use of the ampersand (&) to get the address of a variable
cout << "The address of a is " << ptr << endl;
int d = ~a; // Use of the tilde (~) as the bitwise NOT operator
cout << "The bitwise NOT of " << a << " is " << d << endl;
return 0;
}
输出:
解释: 在这个程序中,星号 (*
) 被用作乘法运算符来计算变量 a 和 b 的乘积。和号 (&
) 被用来获取变量 a 的地址,然后将其打印到控制台。最后,波浪号 (~) 被用作位非运算符来取反变量 a 的值。
6. 运算符
在 C++ 中,运算符是用于对一个或多个操作数进行操作的特殊符号。操作数是运算符作用的值。C++有多种运算符, 包括算术运算符、关系运算符、逻辑运算符等等。
算术运算符 用于执行加法、减法、乘法和除法等数学运算。一些算术运算符的示例包括 +
(用于加法)、-
(用于减法)、*
(用于乘法)和/
(用于除法)。
关系运算符 用于比较两个值并确定它们的关系。一些关系运算符的示例包括 ==
(用于检查相等性)、!=
(用于检查不等性)、>
(用于检查一个值是否大于另一个)和<
(用于检查一个值是否小于另一个)。
逻辑运算符 用于组合两个或多个关系表达式并确定它们的逻辑关系。一些逻辑运算符的示例包括 &&
(用于逻辑与操作)、||
(用于逻辑或操作)和!
(用于逻辑非操作)。
除了这些运算符之外,C++还有一些用于不同目的的其他运算符。例如,位运算符用于对一个值的各个位进行位运算,赋值运算符用于给变量赋值。
总的来说,运算符是 C++ 中的一个重要部分,用于在程序中执行各种操作。
示例:
#include
using namespace std;
int main() {
int a = 5;
int b = 10;
int c = a + b; // Use of the plus (+) operator for addition
cout << "The sum of " << a << " and " << b << " is " << c << endl;
c = a - b; // Use of the minus (-) operator for subtraction
cout << "The difference between " << a << " and " << b << " is " << c << endl;
c = a * b; // Use of the asterisk (*) operator for multiplication
cout << "The product of " << a << " and " << b << " is " << c << endl;
c = a / b; // Use of the forward slash (/) operator for division
cout << "The quotient of " << a << " and " << b << " is " << c << endl;
bool d = (a == b); // Use of the double equals (==) operator to check for equality
cout << "Is " << a << " equal to " << b << "? " << d << endl;
d = (a != b); // Use of the exclamation point and equals (!=) operator to check for inequality
cout << "Is " << a << " not equal to " << b << "? " << d << endl;
return 0;
}
输出:
说明:
在这个程序中,使用了各种不同的运算符来执行不同的操作。+
运算符用于加法,-
运算符用于减法,*
运算符用于乘法,/
运算符用于除法。==
和 !=
运算符分别用于检查相等和不相等。