准备工具Vscode或者Clion或者Dev C++或者Vs studio 和
MSYS2 是C++跨平台的重要工具链.
文章目录
- 准备工作
- 安装MSYS2
- 软件
- 创建文件
- 一、基本介绍
- 1.1C++源文件
- 1.2 代码注释
- 1.3变量与常量
- 1.3.1变量
- 1.3.2 常量
- 1.3.3 二者的区别:
- 1.4 关键字和标识符
- 二、数据类型
- 2.1 基本数据类型:
- 2.1.1整型:
- 2.1.2 浮点型 (实数):
- 2.1.3 字符型 (char 1个字节):
- 2.1.3.(1)转义字符
- 2.1.4 布尔型 (bool):
- 2. 2 用户定义数据类型(后续):
- 2.3 字符串型
- 2.4 数据键入
- 三、运算符
准备工作
安装MSYS2
pacman -S mingw-w64-ucrt-x86_64-gcc
后Y
最后用cmd gcc --version
环境变量添加进去:
软件
CLion
创建文件
右击–New–C/C++ Source File
一、基本介绍
1.1C++源文件
该文件一般是以.cpp 或者 .cxx 后缀结尾的。
#include<iostream>
using namespace std;
// main有且仅有一个
int main() {
cout << "Hello C++__world" << endl;
//system("pause");
return 0;
}
main 函数只包含一行代码:这个单条语句是以 std 开头,然后以一个分号(;)作为结尾
的。
1.2 代码注释
注释是一种编写代码时用来解释程序的作用和用途的特殊语句,编译器会自动检测并忽略,注释并不对程序功能产生任何影响。
格式:
(1)单行注释: // 后接对代码的描述
放置在代码上方,或者代码语句结束的结尾较好。
(2)多行注释:/*多行注释*/
这个由于可能代码篇幅可能较长,所以推荐写在整体的上方。
1.3变量与常量
1.3.1变量
给一段指定的内存空间起名,方便操作这段内存
语法:数据类型 变量名 = 初始值;
注意:最好是在定义的时候,给变量赋初值。因为变量是在操作指定的内存空间,在定义变量的时候,会找某一空间,却不可保证改空间原先的值是没有的。
#include<iostream>
using namespace std;
int main() {
//最好是在定义的时候,给变量赋初值。
int a = 5;
//带有中文输出的内容,需要把编码格式改为GBK
cout << "a 的值= " << a << endl;
system("pause");
return 0;
}
1.3.2 常量
不随任何的行为而改变自身数据
语法:
(1)#define 宏定义 #define 常量名 常量值
源文件的上方定义的
(2)const 修饰的变量 const 数据类型 常量名 = 常量值
被const修饰该变量为常量,不可修改
1.3.3 二者的区别:
虽两种方式都可以用来定义常量,但仍存在一些区别:
-
#define 宏常量:
- 使用预处理指令,简单替换,没有类型检查。
- 不占用内存,直接替换为常量值(是简单的文本替换,它将符号替换成相应的文本; 即:#define 定义的常量没有分配存储空间,没有对应的地址)。
- 可以定义函数、表达式等,不仅仅限于常数(define可以采用表达式作为名称)。
- 宏不受作用域限制,全局可用。
-
const修饰的变量:
- 是真正的变量,具有数据类型,会占用内存。(因为const 定义的常量在内存中分配了存储空间,可以获取其地址)
- 提供类型安全,编译器会进行类型检查。
- 有作用域限制,遵循普通变量的作用域规则。
- 更推荐,因为具有类型信息,易于维护和调试。
通常情况下,推荐使用 const 修饰的变量来定义常量,因为它更具类型安全性和可读性。
1.4 关键字和标识符
C++中的关键字是指具有特殊含义的保留单词,例如"int"和"if"
在给变量或者常量起名称时候,不要用C++得关键字,否则会产生歧义。
标识符是程序员定义的用于命名变量、函数等的名称。 给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读
- 标识符不能是关键字
- 标识符只能由字母、数字、下划线组成
- 第一个字符必须为字母或下划线
- 标识符中字母区分大小写
二、数据类型
C++中的数据类型可以分为
好的,我会继续介绍C++中常见的基本数据类型和用户定义数据类型。
2.1 基本数据类型:
检验类型大小 ` sizeof(数据类型、变量) `
C++是一种静态类型语言,这意味着在创建变量或常量时必须明确指定其数据类型。编译器需要在编译时确定每个变量的数据类型,以便正确分配内存并执行相应的操作。
如果不指定数据类型,编译器将无法正确处理变量的内存分配和操作,因此必须明确定义数据类型。
2.1.1整型:
用于表示整数类型的数据,可以是正数、负数或零。区别在于存储的空间大小不同
short < int <= long <= long long
short:2字节 -2^15 - 2 ^15 -1
int :4字节 -2^31 - 2 ^31 -1
long:在32位系统上通常4字节, 在64位系统上通常8字节, -2^31 - 2 ^31 -1
long long :8字节 -2^15 - 2 ^63 -1
2.1.2 浮点型 (实数):
用于表示带有小数的数值,其中`float`表示单精度浮点数,而`double`表示双精度浮点数。
-
float:
float
是一种单精度浮点数数据类型,通常占用4字节(32位),可以存储大约7位有效数字。- 使用
f
后缀来明确指定一个浮点数为float
类型,如3.14f
。
-
double:
double
是一种双精度浮点数数据类型,通常占用8字节(64位),可以存储大约15-16位有效数字。
-
科学计数法:
- C++支持科学计数法来表示浮点数,使用形如
aeb
的表示法,其中a
是系数,e
是底数为10的指数,b
是指数的符号。例如,3e2
表示 (3 *10^2),即300;0.03
可以写作3e-2
表示 (3 *10^(-2))。
- C++支持科学计数法来表示浮点数,使用形如
示例:
float pi = 3.14f; // 使用 f 后缀指定 float 类型
double largeNumber = 1.234567890123456789; // 默认为 double 类型
float a = 3e2; // 表示 300
float b = 3e-2; // 表示 0.03
2.1.3 字符型 (char 1个字节):
作用: 用于表示单个字符,以ASCII编码1为基础。
语法: char ch = 'a';
注意:
( 1 )用单引号括起字符,示例:char myChar = 'A';
( 2 )单引号内只能包含一个字符,不能是字符串,示例:char myChar = 'AB';
是不允许的,应该是 char myChar = 'A';
( 3 )字符型变量(char)在C和C++中通常占用1个字节(8位),无论是用于存储字符本身还是对应的ASCII码。
2.1.3.(1)转义字符
用于表示一些不能显示出来的ASCII字符
转义字符是在字符前面加上反斜杠(\)来表示一些特殊字符或操作,通常用于在字符串或字符常量中插入不易直接输入的字符。
常用的转义字符有: \n \\ \t
2.1.4 布尔型 (bool):
布尔类型(bool)是一种用于表示真(true)或假(false)的数据类型,在C++中占用1个字节大小。它是用来做逻辑判断的基本类型。
bool flag = true;
cout << flag << endl; // 1
flag = false;
cout << flag << endl; // 0
cout << "size of bool = " << sizeof(bool) << endl; //1
2. 2 用户定义数据类型(后续):
- 结构体 (struct): 允许创建包含多个不同数据类型的组合体,可以通过结构体定义多个变量来描述一个实体的属性。
- 类 (class): 允许创建具有成员变量和成员函数的自定义数据类型,实现了面向对象编程的概念,包括封装、继承和多态。
- 枚举类型 (enum): 允许创建一个包含一组命名常量的新数据类型。
- 共用体 (union):共用体允许在同一内存位置存储不同的数据类型。这意味着共用体的成员共享内存,修改一个成员会影响到其他成员。
- typedef 定义的类型:typedef 是用来为现有类型定义新的名称,提高代码的可读性和可维护性。
2.3 字符串型
在C++中,字符串类型可以属于两种类型:普通类型和用户定义类型,具体取决于使用的字符串表示方式。
-
普通类型(延续C语言风格):
- 在C++中,可以使用字符数组(char array)或指向字符的指针来表示字符串。这种方式属于普通类型,没有特定的用户定义类型,它们是C和C++的基本字符串表示方式。
char str1[] = "Hello, world!"; // 字符数组表示字符串 char* str2 = "Hello, world!"; // 字针表示字符串
-
用户定义类型:
- 另一方面,C++也提供了标准库中的
std::string
类,这是一个用户定义的字符串类型。std::string
是一个类,提供了丰富的字符串操作功能和方便的字符串管理。
#include <string> std::string str = "Hello, world!"; // 使用 std::string 类型
- 另一方面,C++也提供了标准库中的
std::string
是C++标准库中的一部分,它提供了很多方便的字符串处理方法,例如字符串拼接、查找、替换等操作,使得字符串处理更方便和高效。
因此,字符串可以是普通类型(字符数组或指针)或用户定义类型(std::string
),具体取决于你选择的字符串表示方式。如果需要更多信息或有其他问题,请随时提出。
2.4 数据键入
作用:用于从键盘获取数据
关键字: cin
语法: cin >> 变量
cin
通常与运算符>>
一起使用,用于将输入的数据存储到指定的变量中。这样可以方便地从用户那里接收输入,并在程序中进行处理
int x = 0;
cout << "请输入整型变量x的值:" << endl;
cin >> x;
cout << x << endl;
三、运算符
注意(1) 两个小数不可做取模运算,结果看左边
int a3 = 10;
int b3 = 0;
//报错,除数不可以为0
//cout << a3 / b3 << endl;
// 两个小数不可做取模运算,结果看左边
// 除数不为0
cout << -10 % 3 << endl; //-1
cout << 10 % 3 << endl; // 1
//两个小数可以相除
double d1 = 0.5;
double d2 = 0.25;
cout << d1 / d2 << endl;
(2)赋值是‘=’ 等于是‘==’
算术运算符
赋值运算符
比较运算符
逻辑运算符
ASCII(American Standard Code for Information Interchange)编码将每个字符映射到一个唯一的整数。例如,字母 ‘a’ 对应的ASCII码是97。因此,当你在C或C++中创建一个字符型变量时,实际上是将该字符对应的ASCII码存储在内存中。 ↩︎