C++:01.概述和数据类型

记C++的笔记不要面面具细,你不可能把《C++ Primer》大部分内容搬上来,记重点,理解内容,形成知识框架

进入c++的世界

c++程序大致模板:

1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;

int main()
{
cout << "hello world!" << endl; //endl是换行,在屏幕中输出一个hello world
system("pause"); //按任意键继续,采用 system() 函数中的 pause 命令进行程序的暂停
return 0;
}

hello world!

C++标准程序库中的所有标识符都被定义于一个名为std的namespace中

为什么要使用 using namespace std; ?

有些名字容易冲突,所以会使用命名空间的方式进行区分,具体来说就是加个前缀。比如 C++ 标准库里面定义了 vector 容器,你自己也写了个 vector 类,这样名字就冲突了。于是标准库里的名字都加上 std:: 的前缀,你必须用 std::vector 来引用。

同理,你自己的类也可以加个自定义的前缀。但是经常写全名会很繁琐,所以在没有冲突的情况下你可以偷懒,写一句 using namespace std;,接下去的代码就可以不用写前缀直接写 vector 了。但在现在的软件开发过程中,由于担心造成命名空间的污染,一般不建议直接写这句,以后再说。

一、分号

在 C++ 中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
x = y;

C++ 不以行末作为结束符的标识,因此,您可以在一行上放置多个语句
x = y; y = y+1; add(x, y);

二、语句块

语句块是一组使用大括号括起来的按逻辑连接的语句

1
2
3
4
{
cout << "Hello World"; // 输出 Hello World
return 0;
}

三、注释

//单行注释

/*
多行
注释

*/

四、空格

C++ 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。 为了增强可读性,您可以根据需要适当增加一些空格

五、数据类型

C++定义了一套包括算术类型(arithmetic type)和空类型(void)在内的基本数据类型。其中算术类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值,仅用于一些特殊的场合,例如最常见的是,当函数不返回任何值时使用空类型作为返回类型。

数据类型存在的意义是:给变量分配合适的内存空间。创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法分配内存

1. 算术类型

1.1 基本的算数类型

  • 整型 int
  • 实型(浮点型) float
  • 双浮点型 double
  • 字符型 char
  • 布尔型 bool
  • 宽字符型 wchar_t

其中,宽字符型定义:typedef short int wchar_t;所以 wchar_t 实际上的空间是和 short int 一样

各种操作系统中的变量类型在内存中占用的内存可能会不同,可以通过**sizeof**函数获取大小。语法:sizeof(数据类型/变量)。一般来说:short < int <= long <= long long

1.2 数据类型修饰符

一些基本类型可以使用一个或多个类型修饰符进行修饰:signed、unsigned、short、long

signed、unsigned、long 和 short 可应用于整型

long 可应用于双精度浮点型

signed 和 unsigned 可应用于字符型

修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀

1.3 整型

短整型short:占2个字节

整型int:占4个字节

长整型long:占4个字节

长长整型long long:占8个字节

1
2
3
4
5
6
7
8
9
10
11
12
13
int main() {
short num1 = 32767;
int num2 = 32768;
long num3 = 10;
long long num4 = 10;

cout << "short占据的大小:" << sizeof(num1) << endl;
cout << "int占据的大小:" << sizeof(num2) << endl;
cout << "long占据的大小:" << sizeof(num3) << endl;
cout << "long long占据的大小:" << sizeof(num4) << endl;

return 0;
}

short占据的大小:2
int占据的大小:4
long占据的大小:4
long long占据的大小:8

1.4 实型(浮点型)

单精度float,7位有效数字,占用4个字节

双精度double,15-16位有效数字,占用8个字节

科学计数法用e连接,见下面代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main() {
//c++编译器默认情况下只会显示6位有效数字
float f1 = 3.14;
float f2 = 3.14f; //在使用单精度的float时一般会在数字后面加一个f,否则会默认是双精度,然后再转换成float,多一步转换的过程
float f3 = 3.141592653f;

cout << "f1=" << f1 << ",f2=" << f2 << ",f3=" << f3 << endl;

double d1 = 3.14;
double d2 = 3.141592653;

cout << "d1=" << d1 << ",d2=" << d2 << endl;

//统计float和double占用的内存空间
cout << "float占用的内存空间:" << sizeof(float) << endl;
cout << "double占用的内存空间:" << sizeof(double) << endl;

//科学计数法
float f4 = 3e2; //3*10^2
float f5 = 3e-2; //3*10^-2
cout << "f4=" << f4 << endl;
cout << "f5=" << f5 << endl;

return 0;
}

f1=3.14,f2=3.14,f3=3.14159
d1=3.14,d2=3.14159
float占用的内存空间:4
double占用的内存空间:8
f4=300
f5=0.03

1.5 字符型

放在字符串章节中讲

1.6 布尔类型

布尔类型占1个字节,要么为真,要么为假

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main() {
//1、创建bool类型
bool flag = true;
cout << flag << endl;

flag = false;
cout << flag << endl;

//2、占的内存空间
cout << "bool类型所占据的内存空间:" << sizeof(flag) << endl;

//3、布尔类型非0即1
flag = 'a';
cout << flag << endl;

return 0;
}

1
0
bool类型所占据的内存空间:1
1

typedef 声明可以为一个已有的类型取一个新的名字,
语法:typedef type newname;

1
2
typedef int feet;//告诉编译器,feet 是 int 的另一个名称:
feet distance; //创建了一个整型变量 distance

2. 空类型

3. 类型转换


C++:01.概述和数据类型
http://jswanyu.github.io/2021/10/03/Cpp/01.概述和数据类型/
作者
万宇
发布于
2021年10月3日
许可协议