Skip to content

Commit

Permalink
Update PRG-0001-A-Programming.md
Browse files Browse the repository at this point in the history
Add C++
  • Loading branch information
Caizc committed Jan 19, 2021
1 parent 5409ea1 commit e66852c
Showing 1 changed file with 161 additions and 1 deletion.
162 changes: 161 additions & 1 deletion PRG-0001-A-Programming.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,162 @@
# Programming
# C++

## 数据类型

### 基本的内置类型

| 类型 | 关键字 |
| --------------------- | ------- |
| Boolean | bool |
| Character | char |
| Integer | int |
| Floating point | float |
| Double floating point | double |
| Valueless | void |
| Wide character | wchar_t |

```c++
// wchar_t 是这样来的,所以其空间与 short int 一样
typedef short int wchar_t;
```

下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。

| 类型 || 范围 |
| :----------------- | :------------ | :----------------------------------------------------------- |
| char | 1 个字节 | -128 到 127 或者 0 到 255 |
| unsigned char | 1 个字节 | 0 到 255 |
| signed char | 1 个字节 | -128 到 127 |
| int | 4 个字节 | -2147483648 到 2147483647 |
| unsigned int | 4 个字节 | 0 到 4294967295 |
| signed int | 4 个字节 | -2147483648 到 2147483647 |
| short int | 2 个字节 | -32768 到 32767 |
| unsigned short int | 2 个字节 | 0 到 65,535 |
| signed short int | 2 个字节 | -32768 到 32767 |
| long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
| signed long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
| unsigned long int | 8 个字节 | 0 到 18,446,744,073,709,551,615 |
| float | 4 个字节 | 精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字) |
| double | 8 个字节 | 双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字) |
| long double | 16 个字节 | 长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。 |
| wchar_t | 2 或 4 个字节 | 1 个宽字符 |

**注意:**一字节为 8 位,**变量的大小会根据编译器和所使用的电脑而有所不同**

**注意:**long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这一设定。

### typedef 声明

```c++
// 告诉编译器,feet 是 int 的另一个名称
typedef int feet;
// 合法声明,创建了一个 int 变量 distance
feet distance;
```

### 枚举类型

```c++
// 定义一个 color 枚举,变量 c 的类型为 color
enum color { red, green, blue } c;
// 变量 c 被赋值为 blue
c = blue;
```
## 变量类型
变量是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
### 变量声明
变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。可以使用 **extern** 关键字在任何地方声明一个变量。虽然可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。
```c++
// 以下实例中,变量在头部就已经被声明,但它们是在主函数内被定义和初始化的。
#include <iostream>
using namespace std;
// 变量声明
extern int a, b;
extern int c;
extern float f;
int main ()
{
// 变量定义
int a, b;
int c;
float f;
// 实际初始化
a = 10;
b = 20;
c = a + b;
cout << c << endl ;
f = 70.0/3.0;
cout << f << endl ;
return 0;
}
```

```c++
// 以下实例中,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。

// 函数声明
int func();

int main()
{
// 函数调用
int i = func();
}

// 函数定义
int func()
{
return 0;
}
```

## 变量作用域

### 局部变量

在函数或一个代码块内部声明的变量,称为局部变量。

### 全局变量

在所有函数外部定义的变量(通常是在程序的头部),称为全局变量。全局变量的值在程序的整个生命周期内都是有效的。

全局变量可以被任何函数访问。也就是说,全局变量一旦声明,在整个程序中都是可用的。

在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。

### 初始化局部变量和全局变量

当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。

定义全局变量时,系统会自动初始化为下列值:

| 数据类型 | 初始化默认值 |
| :------- | :----------- |
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| pointer | NULL |

### 形式参数

在函数参数的定义中声明的变量,称为形式参数。

## 常量

## Tips

sizeof()

0 comments on commit e66852c

Please sign in to comment.