一、C++概述
1、CPP vs C
CPP:①面向对象的编程语言
C:①面向过程的编程语言
都属于高级语言;
2、CPP的特点
优点:
1、强大的抽象封装能力:这让C++语言具备了强大的开发工程能力时在封装的同时C++最大程度的保留了高性能;
2、高性能:运行快,并且占用资源少;
3、 低功耗;特别适合在各种微型的嵌入式设备中运行高效的程序;
缺点:
1、语法相对复杂,细节比较多,学习曲线比较陡;
2、需要一些好的规范和范式,否则代码很难维护;
3、CPP的应用
大型桌面应用程序开发(Google Chrome and Microsoft Office)
大型网站的后台
游戏和游戏引擎
视觉库和AI引擎(opencv and tensorflow)
数据库
自动驾驶、嵌入式等
二、C++的基础语法
1、编译型语言
1、编程语言的层次和类型:
①机器语言;②编译型语言(C\C++);③解释型语言(Basic/Python);④脚本语言(bash/csh);
依次更接近于人类使用,但运行效率逐渐降低。
2、编译型语言一般需要经历编译和连接的过程,才能变成真正可执行的程序。
2、语言的数据类型
C++中每个变量都有其数据类型,数据类型决定着变量所占内存空间的大小和布局方式、该空间能储存的值的范围,以及变量能参与的运算。
常见数据类型的定义:
3、C++的标识符和关键字
标识符:
①C++中标识符是用来标识变量、函数、类、模块、或任何其他用户自定义项目的名字;
②一个标识符以字母A-Z或a-z或下划线_开始,后跟零个或多个字母、下划线和数字(0-9);如button_yyz;
③一个标识符不允许使用数字开头;
④一个标识符内不允许出现标点字符;如@、&、%等。
**关键字:**常见的关键字。
以上不允许作为自己随机设置的随机变量;因为它们由C++内部定义并规定用法;这些关键词还会不断的更新;
**总结:**标识符是开发者给自定义内容起的名字,一般只能使用字母,数字和下划线来定义,但是数字不能放在首位。
4、C++的变量与常量
**变量:**在程序运行过程中,其值可以改变的量;变量在程序的执行中能够赋值,发生变化;变量有一个名字,并在使用之前要说明其类型,一经说明,就在内存中占据与其类型相应的存储单元;
**变量定义:**首先是类型说明符,随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。当变量在创建时获得了一个特定的值,我们说这个变量被初始化了。用于初始化变量的值可以是任意复杂的表达式。
**常量:**在程序运行过程中,其值一直保持不变的量。常量也区分不同的类型;
**常量定义:**有两种方法
#define PI 3.1415926;//在编译时出错,很难排错
const double PI = 3.1415926;//在编译时出错,可以排错
在编写程序时,尽量使用const定义变量,#define不会出现在编译器期。
**整数常量:**整数常量可以是十进制、八进制或十六进制的常量;前缀指定基数:0x或0X表示十六进制,0表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是U和L的组合,U表示无符号整数,L表示长整数。后缀可以是大写,页可以是小写,U和L的顺序任意;且后缀不可以重复。
布尔常量: true值代表真;false值代表假;
**字符常量:**字符常量是括在单引号中。(在C++中,单引号和双引号的含义是不一样的)
字符常量表:
\称为转义字符。
三、C++的运算符与表达式
1、运算符与表达式基本介绍
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供了以下类型的运算符:算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、杂项运算符。
**表达式;**在程序中,运算符是用来操作数据的,因此,这些数据也被称为操作数,使用运算符将操作数连接而成的式子称为:表达式。
表达式的特点:①常量和变量都是表达式;②运算符的类型对应表达式的类型;③每一个表达式都有自己的值;
2、运算符
1)算数运算符
// demo0.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
int A = 10;
int B = 20;
std::cout << A + B << std::endl; //30
cout << A - B << endl;
cout << A * B << endl;
cout << A + B << endl;
cout << B / A << endl;
cout << 15 / A << endl;
cout << 15.0 / A << endl;
cout << B% A << endl;
cout << ++A << endl;
cout << --A << endl;
return 0;
}
此处有一个易混淆的点,就是C++中A++和++A的区别,可自行敲代码尝试理解,也可参照另外一篇博文尝试理解:C++中A++和++A的区别:https://blog.csdn.net/qq_40666270/article/details/109493801
2)关系运算符
假设变量A的值为10,变量B的值为20;则有以下运算符和结果描述:
代码示例:
std::cout << (A == B) << std::endl;
cout << (A != B) << endl;
cout << (A > B) << endl;
cout << (A < B) << endl;
cout << (A <= B) << endl;
cout << (A >= B) << endl;
3)逻辑运算符
假设变量A的值为1,变量B的值为0,则:
运算符 | 描述 | 实例 |
---|---|---|
&& | 逻辑与运算,如果两个操作数都非零,则条件为真 | ( A&&B)为假 |
II | 逻辑或运算,如果两个操作数中有任意一个非零,则条件为真 | (AIIB为真) |
! | 逻辑非运算,用来逆转操作数的逻辑状态。 | !(A&&B)为真 |
德摩根律
德摩根律的逻辑表达:
cout<<(!(A||B)==(!A&&!B))<<endl;//1
cout<<(!(A&&B)==(!A||!B))<<endl;//1
4)赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | C=A+B将A+B的值赋给C |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 | C+=A相当于C=C+A |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 | C-=A相当于C=C-A |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 | C*=A相当于C=C*A |
/= | 除且赋值运算符,把左边操作数初一右边操作数的结果赋值给左边操作数 | C/=A相当于C=C/A |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 | C%=A相当于C=C%A |
<<= | 左移且赋值运算符 | C<<=2等同于C=C<<2 |
>>= | 右移且赋值运算符 | C>>=2等同于C=C>>2 |
&= | 按位与且赋值运算符 | C&=2等同于C=C&2 |
^= | 按位异且赋值运算符 | C^ =2等同于C=C^2 |
I= | 按位或且赋值运算符 | CI=2等同于C=CI2 |
5)位运算符
位运算符作用于位,并逐位执行操作。&、|和^。与、或、异或。
位逻辑运算符:
& (位 “与”) and
^ (位 “异或”)
| (位 “或”) or
~ (位 “取反”)
移位运算符:
<<(左移) >> (右移)
优先级:
位“与”、位“或”和位“异或”运算符都是双目运算符,其结合性都是从左向右的,优先级高于逻辑运算符,低于比较运算符,且从高到低一次为&、^、|。
6)杂项运算符
本人也是初学,有疑问可加QQ1297716447,说明来意,互相交流学习。