C++基础入门教程_c++教程_salmon_zhang的博客-程序员宅基地

技术标签: C++  C++教义  C++基础入门教程  C++教程  C++基础  C++入门教程  

1 C++初识

1.1 第一个C++程序

编写一个C++程序总共分为4个步骤

  • 创建项目
  • 创建文件
  • 编写代码
  • 运行程序

1.1.1 创建项目

​ Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.1.2 创建文件

右键源文件,选择添加->新建项

在这里插入图片描述

给C++文件起个名称,然后点击添加即可。

在这里插入图片描述

1.1.3 编写代码

#include<iostream>
using namespace std;

int main() {
   
    

	cout << "Hello world" << endl;

	system("pause");

	return 0;
}

1.1.4 运行程序

在这里插入图片描述

1.2 注释

作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码

两种格式

  1. 单行注释// 描述信息
    • 通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明
  2. 多行注释/* 描述信息 */
    • 通常放在一段代码的上方,对该段代码做整体说明

提示:编译器在编译代码时,会忽略注释的内容

1.3 变量

作用:给一段指定的内存空间起名,方便操作这段内存

语法数据类型 变量名 = 初始值;

示例:

#include<iostream>
using namespace std;

int main() {
   
    

	//变量的定义
	//语法:数据类型  变量名 = 初始值

	int a = 10;

	cout << "a = " << a << endl;
	
	system("pause");

	return 0;
}

注意:C++在创建变量时,必须给变量一个初始值,否则会报错

1.4 常量

作用:用于记录程序中不可更改的数据

C++定义常量两种方式

  1. #define 宏常量: #define 常量名 常量值

    • 通常在文件上方定义,表示一个常量
  2. const修饰的变量 const 数据类型 常量名 = 常量值

    • 通常在变量定义前加关键字const,修饰该变量为常量,不可修改

示例:

//1、宏常量
#define day 7

int main() {
   
    

	cout << "一周里总共有 " << day << " 天" << endl;
	//day = 8;  //报错,宏常量不可以修改

	//2、const修饰变量
	const int month = 12;
	cout << "一年里总共有 " << month << " 个月份" << endl;
	//month = 24; //报错,常量是不可以修改的
	
	
	system("pause");

	return 0;
}

1.5 关键字

作用: 关键字是C++中预先保留的单词(标识符)

  • 在定义变量或者常量时候,不要用关键字

C++关键字如下:

asm do if return typedef
auto double inline short typeid
bool dynamic_cast int signed typename
break else long sizeof union
case enum mutable static unsigned
catch explicit namespace static_cast using
char export new struct virtual
class extern operator switch void
const false private template volatile
const_cast float protected this wchar_t
continue for public throw while
default friend register true
delete goto reinterpret_cast try

提示:在给变量或者常量起名称时候,不要用C++得关键字,否则会产生歧义。

1.6 标识符命名规则

作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则

  • 标识符不能是关键字
  • 标识符只能由字母、数字、下划线组成
  • 第一个字符必须为字母或下划线
  • 标识符中字母区分大小写

建议:给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读

2 数据类型

C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存

2.1 整型

作用:整型变量表示的是整数类型的数据

C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同

数据类型 占用空间 取值范围
short(短整型) 2字节 (-2^15 ~ 2^15-1)
int(整型) 4字节 (-2^31 ~ 2^31-1)
long(长整型) Windows为4字节,Linux为4字节(32位),8字节(64位) (-2^31 ~ 2^31-1)
long long(长长整型) 8字节 (-2^63 ~ 2^63-1)

2.2 sizeof关键字

作用: 利用sizeof关键字可以统计数据类型所占内存大小

语法: sizeof( 数据类型 / 变量)

示例:

int main() {
   
    

	cout << "short 类型所占内存空间为: " << sizeof(short) << endl;

	cout << "int 类型所占内存空间为: " << sizeof(int) << endl;

	cout << "long 类型所占内存空间为: " << sizeof(long) << endl;

	cout << "long long 类型所占内存空间为: " << sizeof(long long) << endl;

	system("pause");

	return 0;
}

整型结论:short < int <= long <= long long

2.3 实型(浮点型)

作用:用于表示小数

浮点型变量分为两种:

  1. 单精度float
  2. 双精度double

两者的区别在于表示的有效数字范围不同。

数据类型 占用空间 有效数字范围
float 4字节 7位有效数字
double 8字节 15~16位有效数字

示例:

int main() {
   
    

	float f1 = 3.14f;
	double d1 = 3.14;

	cout << f1 << endl;
	cout << d1<< endl;

	cout << "float  sizeof = " << sizeof(f1) << endl;
	cout << "double sizeof = " << sizeof(d1) << endl;

	//科学计数法
	float f2 = 3e2; // 3 * 10 ^ 2 
	cout << "f2 = " << f2 << endl;

	float f3 = 3e-2;  // 3 * 0.1 ^ 2
	cout << "f3 = " << f3 << endl;

	system("pause");

	return 0;
}

2.4 字符型

作用: 字符型变量用于显示单个字符

语法:char ch = 'a';

注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号

注意2:单引号内只能有一个字符,不可以是字符串

  • C和C++中字符型变量只占用1个字节
  • 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元

示例:

int main() {
   
    
	
	char ch = 'a';
	cout << ch << endl;
	cout << sizeof(char) << endl;

	//ch = "abcde"; //错误,不可以用双引号
	//ch = 'abcde'; //错误,单引号内只能引用一个字符

	cout << (int)ch << endl;  //查看字符a对应的ASCII码
	ch = 97; //可以直接用ASCII给字符型变量赋值
	cout << ch << endl;

	system("pause");

	return 0;
}

ASCII码表格:

ASCII 控制字符 ASCII 字符 ASCII 字符 ASCII 字符
0 NUT 32 (space) 64 @ 96
1 SOH 33 ! 65 A 97 a
2 STX 34 " 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 / 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 `
31 US 63 ? 95 _ 127 DEL

ASCII 码大致由以下两部分组成:

  • ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。
  • ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。

2.5 转义字符

作用: 用于表示一些不能显示出来的ASCII字符

现阶段我们常用的转义字符有:\n \\ \t

转义字符 含义 ASCII码值(十进制)
\a 警报 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\\ 代表一个反斜线字符"" 092
代表一个单引号(撇号)字符 039
" 代表一个双引号字符 034
? 代表一个问号 063
\0 数字0 000
\ddd 8进制转义字符,d范围0~7 3位8进制
\xhh 16进制转义字符,h范围09,af,A~F 3位16进制

示例:

int main() {
   
    
	
	
	cout << "\\" << endl;
	cout << "\tHello" << endl;
	cout << "\n" << endl;

	system("pause");

	return 0;
}

2.6 字符串型

作用:用于表示一串字符

两种风格

  1. C风格字符串char 变量名[] = "字符串值"

    示例:

    int main() {
         
          
    
    	char str1[] = "hello world";
    	cout << str1 << endl;
        
    	system("pause");
    
    	return 0;
    }
    

注意:C风格的字符串要用双引号括起来

  1. C++风格字符串string 变量名 = "字符串值"

    示例:

    int main() {
         
          
    
    	string str = "hello world";
    	cout << str << endl;
    	
    	system("pause");
    
    	return 0;
    }
    

注意:C++风格字符串,需要加入头文件==#include<string>==

2.7 布尔类型 bool

作用: 布尔数据类型代表真或假的值

bool类型只有两个值:

  • true — 真(本质是1)
  • false — 假(本质是0)

bool类型占1个字节大小

示例:

int main() {
   
    

	bool flag = true;
	cout << flag << endl; // 1

	flag = false;
	cout << flag << endl; // 0

	cout << "size of bool = " << sizeof(bool) << endl; //1
	
	system("pause");

	return 0;
}

2.8 数据的输入

作用:用于从键盘获取数据

关键字: cin

语法: cin >> 变量

示例:

int main(){
   
    

	//整型输入
	int a = 0;
	cout << "请输入整型变量:" << endl;
	cin >> a;
	cout << a << endl;

	//浮点型输入
	double d = 0;
	cout << "请输入浮点型变量:" << endl;
	cin >> d;
	cout << d << endl;

	//字符型输入
	char ch = 0;
	cout << "请输入字符型变量:" << endl;
	cin >> ch;
	cout << ch << endl;

	//字符串型输入
	string str;
	cout << "请输入字符串型变量:" << endl;
	cin >> str;
	cout << str << endl;

	//布尔类型输入
	bool flag = true;
	cout << "请输入布尔型变量:" << endl;
	cin >> flag;
	cout << flag << endl;
	system("pause");
	return EXIT_SUCCESS;
}

3 运算符

作用: 用于执行代码的运算

本章我们主要讲解以下几类运算符:

运算符类型 作用
算术运算符 用于处理四则运算
赋值运算符 用于将表达式的值赋给变量
比较运算符 用于表达式的比较,并返回一个真值或假值
逻辑运算符 用于根据表达式的值返回真值或假值

3.1 算术运算符

作用:用于处理四则运算

算术运算符包括以下符号:

运算符 术语 示例 结果
+ 正号 +3 3
- 负号 -3 -3
+ 10 + 5 15
- 10 - 5 5
* 10 * 5 50
/ 10 / 5 2
% 取模(取余) 10 % 3 1
++ 前置递增 a=2; b=++a; a=3; b=3;
++ 后置递增 a=2; b=a++; a=3; b=2;
前置递减 a=2; b=–a; a=1; b=1;
后置递减 a=2; b=a–; a=1; b=2;

示例1:

//加减乘除
int main() {
   
    

	int a1 = 10;
	int b1 = 3;

	cout << a1 + b1 << endl;
	cout << a1 - b1 << endl;
	cout << a1 * b1 << endl;
	cout << a1 / b1 << endl;  //两个整数相除结果依然是整数

	int a2 = 10;
	int b2 = 20;
	cout << a2 / b2 << endl; 

	int a3 = 10;
	int b3 = 0;
	//cout << a3 / b3 << endl; //报错,除数不可以为0


	//两个小数可以相除
	double d1 = 0.5;
	double d2 = 0.25;
	cout << d1 / d2 << endl;

	system("pause");

	return 0;
}

总结:在除法运算中,除数不能为0

示例2:

//取模
int main() {
   
    

	int a1 = 10;
	int b1 = 3;

	cout << 10 % 3 << endl;

	int a2 = 10;
	int b2 = 20;

	cout << a2 % b2 << endl;

	int a3 = 10;
	int b3 = 0;

	//cout << a3 % b3 << endl; //取模运算时,除数也不能为0

	//两个小数不可以取模
	double d1 = 3.14;
	double d2 = 1.1;

	//cout << d1 % d2 << endl;

	system("pause");

	return 0;
}

总结:只有整型变量可以进行取模运算

示例3:

//递增
int main() {
   
    

	//后置递增
	int a = 10;
	a++; //等价于a = a + 1
	cout << a << endl; // 11

	//前置递增
	int b = 10;
	++b;
	cout << b << endl; // 11

	//区别
	//前置递增先对变量进行++,再计算表达式
	int a2 = 10;
	int b2 = ++a2 * 10;
	cout << b2 << endl;

	//后置递增先计算表达式,后对变量进行++
	int a3 = 10;
	int b3 = a3++ * 10;
	cout << b3 << endl;

	system("pause");

	return 0;
}

总结:前置递增先对变量进行++,再计算表达式,后置递增相反

3.2 赋值运算符

作用: 用于将表达式的值赋给变量

赋值运算符包括以下几个符号:

运算符 术语 示例 结果
= 赋值 a=2; b=3; a=2; b=3;
+= 加等于 a=0; a+=2; a=2;
-= 减等于 a=5; a-=3; a=2;
*= 乘等于 a=2; a*=2; a=4;
/= 除等于 a=4; a/=2; a=2;
%= 模等于 a=3; a%2; a=1;

示例:

int main() {
   
    

	//赋值运算符

	// =
	int a = 10;
	a = 100;
	cout << "a = " 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/salmon_zhang/article/details/109737312

智能推荐

OCR光学字符识别_ocr光学字符识别方法汇总(附开源代码)-程序员宅基地

没搞过计算机视觉,只好拿来主义了: 根据网上的推荐: 1. google vision,识别效果还不错,收费,而且对于复杂文本也不是很理想,所以继续寻找开源代码; 2. tesseract,最负盛名的开源识别软件,据说google vision内部也是基于此。就我们公司的需求来说(提取图片中嵌入的文本),tesseract能识别30%左右的good case,剩下20%凑合,剩下多数是没有文本_ocr光学字符识别方法汇总(附开源代码)

java获取计算机设备信息的操作_java获取所在设备sn_YH_Nothing的博客-程序员宅基地

package com.RuoYi.RuoYiPojo;import java.applet.Applet;import java.awt.*;import java.awt.Graphics;import java.io.BufferedReader;import java.io.File;import java.io.FileWriter;import java.io.InputStreamReader;import java.net.InetAddress;import java._java获取所在设备sn

vps安装php 7.3,CentOS 7 源码安装 php 7.3.24-程序员宅基地

PHP (超文本预处理器)PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,..._centos 编译安装php7.3.24

满招损 是与非 祸并福 --- 《贞观长歌》中的人生哲理-程序员宅基地

满招损,是与非,祸并福――《贞观长歌》中的人生哲理电视剧《贞观长歌》确实拍得不赖,不过央视每天2集的速度显然很不过瘾,于是我网上下载了全部82集,花了2个晚上走马观花看了一遍,发现这故事耐人寻味,蕴含很多哲理发人深省。。。。。 厚黑与良知 李宗吾曰:“厚黑者,非由外铄我也,我固有之也。天生庶民,有厚有黑,民之秉彝,好是厚黑。”这是可以试验的。随便找一个当母亲的,把她亲生孩子抱着吃饭

Web3.0 时代 (2010-2020) 真的么?-程序员宅基地

Web 1.0: 信息互联,上网,追求信息获取与交换。 Web 2.0: 人员互联,社交,追求个性化和用户体验。 Web 3.0: 知识互联,推理,享受语义级别的表示与推理。 Web 4.0: 智能互联,互动,无所不在的网络, 人机间无缝交流。 人类进入了互联的时代 对于网络发展的预测 对于搜索需求的预测 更高的平台需求 Web2.0 出现了一批弄潮儿, Google Earth,MySpace,Facebook,Youtube,Twitter, 当然这些在国内会统统死掉…

C语言程序设计入门 第8周编程练习 2 GPS数据处理_void gps_process(u8 res){ if(res == '$') { count_r-程序员宅基地

2GPS数据处理(6分)题目内容:NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协._void gps_process(u8 res){ if(res == '$') { count_rec=0; state=state_start; r

随便推点

异步FIFO为什么要使用格雷码(摘)_异步fifo采用格雷码是为了-程序员宅基地

首先要了解的是异步FIFO使用格雷码的唯一目的就是“即使在亚稳态进行读写指针抽样也能进行正确的空满状态判断”。那么典型的判断方法是怎样进行的呢?以满状态判断为例,先要对读指针(属于读时钟域)在写时钟域进行抽样,然后才能与写指针进行比较,如果写指针赶上了读指针,说明已经写满,写操作必须暂停。接下来说说为什么2进制指针不适合做空满判断。事实上2进制读指针在增减时,经常发生多位突_异步fifo采用格雷码是为了

LaTeX新人教程,30分钟从完全陌生到基本入门_optik tex文件-程序员宅基地

1.LaTeX软件的安装和使用 方法A(自助):在MikTeX的官网下载免费的MikTeX编译包并安装。下载WinEdt(收费)或TexMaker(免费)等编辑界面软件并安装。 方法B(打包):在ctex.org下载ctex套装(含MikTeX及WinEdt) 哈哈这一部分当然不包含在标题的30分钟里。 2.第一个文档 打开WinEdt,建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择..._optik tex文件

华为手机照片如何出现时间地点天气,教你30秒,一学就会_华为手机照相增加地点-程序员宅基地

华为手机的性能是越来越好,许多的人都开始使用华为手机了,买华为手机的很多小伙伴都是为它的拍照功能才买的,毕竟还被国际权威DXO评为世界上最好的拍照手机,我们出门在外都会带手机,遇见美丽的景色就会忍不住拍一个,但是很多小伙伴都很想有一个显示时间地点日期的水印,这样拍摄出来的照片才有留恋的意义,今天小编就教教大家如何给华为手机添加这种水印。方法一首先我们打开华为手机的相机,然后我们在..._华为手机照相增加地点

html 自定义 滚动条颜色 (chrome )_html滚动条颜色_遗忘了的自己的博客-程序员宅基地

针对webkit内核的浏览器,使用伪类来改变滚动条的默认样式::-webkit-scrollbar 滚动条整体部分::-webkit-scrollbar-thumb 滚动条里面的小方块,能向上向下移动(或向左向右移动)::-webkit-scrollbar-track 滚动条的轨道(里面装有Thumb)::-webkit-scrollbar-button 滚动条的轨道的两端按钮,由于通过点击微调小方块的- 位置。::-webkit-scrollbar-track-piece 内层轨道,滚动条._html滚动条颜色

数据分析工具篇——MapReduce结构-程序员宅基地

公众号后台回复“图书“,了解更多号主新书内容作者:livan来源:数据python与算法前面我们介绍了HDFS,作为HDFS的第一代上层架构,我们必须讲解一下hadoop的MapR..._mapreduce数据结构

python opencv读mp4视频_cv2 mp4-程序员宅基地

#获得视频的格式videoCapture = cv2.VideoCapture('/home/lw/3661.mp4') #获得码率及尺寸fps = videoCapture.get(cv2.CAP_PROP_FPS)size = (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(videoCapture.ge..._cv2 mp4