这篇文章将会帮助你继续学习 C++。
基本程序结构
下面的这些是基本的程序结构,所有的程序都需要遵循这个结构来写。
#include <iostream>
// 其它更多的头文件 ...
using namespace std;
// main() 函数是程序开始执行的地方
int main()
{
cout << "Hello World"; // 输出 Hello World
return 0; // 程序结束
}
这些在“入门”那篇也涉及过了,就不多说了。
头文件
头文件通常用 #include <...>
来引用,下面是常用的头文件:
头文件 | 描述 |
---|---|
iostream | C++ 基本头文件,必写 |
cstdio | C 基本头文件,常用 |
cmath | 数学头文件,含有公式等 |
cstring | C++ string 头文件,处理字符串常用 |
基本语句(不要忘分号)
在 C++ 中,所有的语句的结构都由 语句内容 + ;
构成,下面是一些例子:
x = y;
sum = a + b;
MyCoolFunction(x);
分号是大家经常忘的东西,所以我在加粗强调一遍。
由于 C++ 不用回车换行来区分语句,所以你也可以把一些语句叠在一行里写,例如:
x = y; sum = a + b; MyCoolFunction(x);
关于空格
空格是个人编程习惯,写不写均可,我个人建议加上空格,这样可以让你的代码读起来更加舒服。
标识符
标识符相当于大家的姓名,用于区分不同的变量等内容,就是名称。
一个标识符以字母 A-Z
或 a-z
或下划线 _
开始,后跟零个或多个字母、下划线和数字 0-9
。
同时也要注意要避免这些关键字。
合法的标识符:
haha a var1 g123 _yEp
非法的标识符:
if else 123haha _ e
e
在 C++ 中是作为数量级出现的,不可以作为标识符使用。
注释
程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。
C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。分为两种,如下:
// ...
用于单行注释/* 这里可以分割很多行 */
用于多行注释
变量
变量类型
C++ 提供了很多的变量类型,如下表(不全):
类型 | 说明 |
---|---|
布尔型 bool | 可以存储 true (真) false (假) 两种状态 (1字节) |
整型 int | 存储整数,最基本的类型 (4字节) |
字符型 char | 可以存储单个字符(如字母、字符型数字等)(1字节) |
浮点 float | 可以存储小数(4字节) |
双浮点 double | 可以存储更大的小数(8字节) |
typedef
通过 typedef
可以把一个类型命名为另一个类型,例如:
typedef int mytype;
mytype var; // 相当于 int var;
变量作用域
- 在一个函数内声明的变量叫做“局部变量”
- 在函数外声明的变量叫做“全局变量”
当在函数内声明的局部变量与全局变量重名后,不会发生错误,而是会自动的在函数内只承认函数内的局部变量。
#include <iostream>
using namespace std;
int a = 1; // 全局变量
int main ()
{
int a = 2, b = 3; // 局部变量
cout << a << " " << b;
return 0;
}
此时会输出: 2 3
。
运算符
赋值运算符
运算符 | 解释 |
---|---|
= | 赋值运算 (a = b) |
+= | a += b 相当于 a = a + b |
-= | a -= b 相当于 a = a - b |
*= | a *= b 相当于 a = a * b |
/= | a /= b 相当于 a = a / b |
%= | a %= b 相当于 a = a % b |
算术运算符
C++ 的几个算数运算符:
运算符 | 解释 |
---|---|
+ | 加法运算 (a + b) |
- | 减法运算 (a - b) |
* | 乘法运算 (a * b) |
/ | 除法运算 (a / b) |
% | 取余运算,就是 a / b 的余数 (a % b) |
++ | 自增运算,整数值增加 1 (a ++) |
-- | 自减运算,整数值减去 1 (a --) |
例子:
#include <iostream>
using namespace std;
int main()
{
int a = 21;
int b = 10;
int c;
c = a + b;
cout << "Line 1 - c 的值是 " << c << endl ;
c = a - b;
cout << "Line 2 - c 的值是 " << c << endl ;
c = a * b;
cout << "Line 3 - c 的值是 " << c << endl ;
c = a / b;
cout << "Line 4 - c 的值是 " << c << endl ;
c = a % b;
cout << "Line 5 - c 的值是 " << c << endl ;
int d = 10; // 测试自增、自减
c = d++;
cout << "Line 6 - c 的值是 " << c << endl ;
d = 10; // 重新赋值
c = d--;
cout << "Line 7 - c 的值是 " << c << endl ;
return 0;
}
运行后会得到这些结果:
Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 10
Line 7 - c 的值是 10
关系运算符
下面是关系运算符:
运算符 | 描述 |
---|---|
== | 是否相等,相等为真 |
!= | 是否相等,相等为假 |
> | 是否大于,大于为真 |
< | 是否小于,小于为真 |
>= | 是否大于等于,大等于为真 |
<= | 是否小于等于,小等于为真 |
例子:
#include <iostream>
using namespace std;
int main()
{
int a = 21;
int b = 10;
int c ;
if( a == b )
{
cout << "Line 1 - a 等于 b" << endl ;
}
else
{
cout << "Line 1 - a 不等于 b" << endl ;
}
if ( a < b )
{
cout << "Line 2 - a 小于 b" << endl ;
}
else
{
cout << "Line 2 - a 不小于 b" << endl ;
}
if ( a > b )
{
cout << "Line 3 - a 大于 b" << endl ;
}
else
{
cout << "Line 3 - a 不大于 b" << endl ;
}
/* 改变 a 和 b 的值 */
a = 5;
b = 20;
if ( a <= b )
{
cout << "Line 4 - a 小于或等于 b" << endl ;
}
if ( b >= a )
{
cout << "Line 5 - b 大于或等于 a" << endl ;
}
return 0;
}
运行后的结果是:
Line 1 - a 不等于 b
Line 2 - a 不小于 b
Line 3 - a 大于 b
Line 4 - a 小于或等于 b
Line 5 - b 大于或等于 a
逻辑运算符
下面是逻辑运算符:
运算符 | 描述 |
---|---|
&& | 两个都是真,则为真 |
两个竖线 | 有一个是真,则为真 |
! | 非,这个会把真变为假,假变为真 |
例子:
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b = 20;
int c ;
if ( a && b )
{
cout << "Line 1 - 条件为真"<< endl ;
}
if ( a || b )
{
cout << "Line 2 - 条件为真"<< endl ;
}
/* 改变 a 和 b 的值 */
a = 0;
b = 10;
if ( a && b )
{
cout << "Line 3 - 条件为真"<< endl ;
}
else
{
cout << "Line 4 - 条件不为真"<< endl ;
}
if ( !(a && b) )
{
cout << "Line 5 - 条件为真"<< endl ;
}
return 0;
}
Line 1 - 条件为真
Line 2 - 条件为真
Line 4 - 条件不为真
Line 5 - 条件为真