C++ 语法
引言
C++是一种功能强大、灵活且被广泛使用的编程语言,它扩展了C语言,增加了面向对象编程、泛型编程和标准模板库等特性。掌握C++的语法是成为一名熟练的C++程序员的第一步。本文将系统地介绍C++的基础语法,帮助初学者建立坚实的语言基础。
基本程序结构
一个最简单的C++程序包含以下部分:
#include <iostream> // 包含头文件
int main() { // 主函数
std::cout << "Hello, World!" << std::endl; // 语句
return 0; // 返回语句
}
输出:
Hello, World!
程序结构解析:
- 预处理指令:
#include <iostream>
包含了输入输出流的标准库头文件。 - 主函数:
main()
是程序的入口点,每个C++程序都必须有一个。 - 函数体:由花括号
{}
包围。 - 语句:
std::cout << "Hello, World!" << std::endl;
是一个输出语句。 - 返回语句:
return 0;
表示程序正常结束。
注释
C++支持两种注释方式:
// 这是单行注释
/* 这是多行注释
可以跨越多行 */
提示
良好的注释习惯可以使代码更易读、更易维护。
数据类型
C++提供了多种内置数据类型:
基本数据类型
#include <iostream>
using namespace std;
int main() {
// 整数类型
int integerVar = 10;
short shortVar = 5;
long longVar = 100000L;
long long longLongVar = 10000000000LL;
// 浮点类型
float floatVar = 3.14f;
double doubleVar = 3.14159;
// 字符类型
char charVar = 'A';
// 布尔类型
bool boolVar = true;
cout << "整数: " << integerVar << endl;
cout << "短整数: " << shortVar << endl;
cout << "长整数: " << longVar << endl;
cout << "长长整数: " << longLongVar << endl;
cout << "浮点数: " << floatVar << endl;
cout << "双精度浮点数: " << doubleVar << endl;
cout << "字符: " << charVar << endl;
cout << "布尔值: " << boolVar << endl;
return 0;
}
输出:
整数: 10
短整数: 5
长整数: 100000
长长整数: 10000000000
浮点数: 3.14
双精度浮点数: 3.14159
字符: A
布尔值: 1
派生数据类型
- 数组:同一类型的集合
- 指针:存储内存地址的变量
- 引用:已存在变量的别名
- 结构体:不同类型的组合
- 枚举:自定义的有限集合
变量与常量
变量声明和初始化
int age = 25; // 声明并初始化
int height; // 仅声明
height = 180; // 赋值
常量定义
const double PI = 3.14159; // 使用const关键字
#define MAX_SIZE 100 // 使用预处理指令(不推荐)
警告
常量一旦定义,就不能被修改,尝试修改会导致编译错误。
运算符
C++支持多种运算符:
算术运算符
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 3;
cout << "a + b = " << a + b << endl; // 加法
cout << "a - b = " << a - b << endl; // 减法
cout << "a * b = " << a * b << endl; // 乘法
cout << "a / b = " << a / b << endl; // 整数除法
cout << "a % b = " << a % b << endl; // 取余
return 0;
}
输出:
a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1
关系运算符
cout << "a == b: " << (a == b) << endl; // 等于
cout << "a != b: " << (a != b) << endl; // 不等于
cout << "a > b: " << (a > b) << endl; // 大于
cout << "a < b: " << (a < b) << endl; // 小于
cout << "a >= b: " << (a >= b) << endl; // 大于等于
cout << "a <= b: " << (a <= b) << endl; // 小于等于
逻辑运算符
bool x = true, y = false;
cout << "x && y: " << (x && y) << endl; // 逻辑与
cout << "x || y: " << (x || y) << endl; // 逻辑或
cout << "!x: " << (!x) << endl; // 逻辑非
赋值运算符
int c = 5;
c += 3; // 等价于 c = c + 3;
cout << "c = " << c << endl; // 输出: c = 8
其他运算符
- 位运算符:
&
,|
,^
,~
,<<
,>>
- 自增自减:
++
,--
- 条件运算符:
?:
- 成员运算符:
.
,->
- 其他:
,
,[]
,()
,sizeof
控制流程
条件语句
if-else语句
#include <iostream>
using namespace std;
int main() {
int number;
cout << "输入一个整数: ";
cin >> number;
if (number > 0) {
cout << "正数" << endl;
} else if (number < 0) {
cout << "负数" << endl;
} else {
cout << "零" << endl;
}
return 0;
}
switch语句
char grade;
cout << "输入成绩等级(A-F): ";
cin >> grade;
switch (grade) {
case 'A':
cout << "优秀!" << endl;
break;
case 'B':
cout << "良好!" << endl;
break;
case 'C':
cout << "中等!" << endl;
break;
case 'D':
cout << "及格!" << endl;
break;
case 'F':
cout << "不及格!" << endl;
break;
default:
cout << "无效的等级!" << endl;
}
备注
switch
语句中的break
是必要的,否则会发生"贯穿"现象,执行后续所有case。