第一天:
Visual Studio 2019下载安装官网地址
Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com)
打开VS2019创建C++控制台运用,
#include<iostream> //头字是#的是处理指令,这里是包含头文件iostream
std::cout<<" C/C++零基础到大神:\n";
cout理解把“”里面的字符输出到屏幕,双引号里面的是字符,"\n"、"\\" 、" \" "、" \' "、在屏幕上显示的为,
换行、\、" 、' system函数的用法:("pause")暂停,("cls")清屏,("mode con cols =宽 lines = 高")设置控制台窗口大小,("color")设置控制台窗口的颜色 说明:win+r打开输入cmd 输入mode /? c或者color /? 对应的说明使用。
认识内存1G=1024MB,1MB=1024KB,1KB=1024B,1B=8bit,如数据类型short 2个字节16bit或16位
认识进制16进制0x,8进制0,二进制0b分别代表对应的进制。
认识常量和变量规定常量的值不会改变,变量的值可能改变,(题外话常量创建出来在内存机制中分配了内存,以后会说明怎么改变常量的数据),C++17写法 :变量的定义:类型 名字 {初始值};常量的定义第1种const 类型 名字{初始值} ,第二种 直接使用值,第三种 #define 名字 值。
认识有符合的整形 char 、signed char 1字节取值范围 -2^8/2 到 + (2^8/2)-1 ;short 、short int 、signed int、signe short、signed short int 2字节取值范围 -2^16/2 到 + (2^16/2)-1 ;int、 signed、signed int 4字节取值范围为 -2^32/2 到 + (2^32/2)-1 ;long 、long int、signed long、signed long int 4字节或者8字节根据编译器的不用,取值范围-2^32/2 到 + (2^32/2)-1或者-2^64/2 到 + (2^64/2)-1 ;long long、long long int、signed long long、signed long long int 8字节取值范围-2^64/2 到 + (2^64/2)-1。
认识无符号的整形 unsigned char 1字节 取值范围0到2^8-1 ;unsigned short 2字节取值范围0到2^16-1 ;unsigned 、unsigned int 4字节 取值范围0到2^32-1;unsigned long 4字节或者8字节取值范围为 0到2^32-1或者0到2^64-1;unsigned long long 8字节 取值范围0到2^64-1
认识布尔类型 bool 1字节取值范围 true或者false
整形字面量的表达 0b+二进制+后缀,0+八进制+后缀,0x+十六进制+后缀;后缀L或者LL或者U分别代表long型,loog long型,无符号型;如ULL代表无符号long long型。
基本的算术运算 加 +,减- ,乘*,除/,模%,100%33=3余1的模就等于1;+=,-=,*=,/=,%=,a+=1相当于a=a+1;少了一个a,把a+1放到临时变量再赋值给a自己,++a,a++,--a,a--分别是a前加加,a后加加,a前减减,a后减减
#include <iostream>
main(){
short a{100};
short b{++a + 10};//a = a+1=101,b=a+10
std::cout<<b;//b=111
short a{100};
short b{a++ + 10};//b = a+10=110,a = a+1=101
std::cout<<b;//b=111
}
认识浮点数(小数)类型有float 4字节,取值范围:大约7位精度±3.4E±38(-3.4*10^38到+3.4*10^38)、double 8字节 取值范围:大约15位精度±1.7E±308、longdouble 8字节 取值范围:大约15位精度±1.7E±308、
浮点数的表达:float 小数后面加f或者F如200.0f,不带后缀的浮点数一律视为double类型,后缀为L的浮点数视为 long double类型
认识类型转换 类型转换顺序从高到低依次是 long double 、double 、float 、unsigned long long 、long long 、unsigned long 、long 、 unsigned int 、int。C++语言的类型转换:static_cast<目标类型>(要转换的内容)如int a = static_cast<int>(b);C语言:类型(要转换的内容)如int(a-b) 。类型占内存=sizeof(类型)。
认识字符 char 内存占1字节 ASCII字符;wchar_t 2字节 宽字节字符;char16_t 2字节 utf_16字符;char32_t 4字节 utf_32字符;初始化{'A'}、{L'A'}、{u'A'}、{U'A'}。(char)10换行,ASCII表
推断类型 auto 变量名 {初始值};auto ID {10UL}//unsigned long类型;查看一个变量的类型 typeid(变量).name();
格式化输出及转义 补充:引用头文件bitset,输出的数字采用二进制输出std::bitset<要显示的二进制位数:8位,16位或32位……>(要显示的变量);std::boolalpha;可以将流的输出控制位bool类型;
运算符优先级
认识枚举类型 :enum class 类型名称:基本类型{选项1,选项2};声明一个枚举变量:类型,名称 变量名称;
注意
1枚举类型可以提高代码的可读性和安全性
2枚举类型默认是int类型
3枚举类型成员只能是整数类型
4枚举类型和其他类型转换需要强制转换
5默认情况下,枚举类型的下一个项的初始值是上一个项的初始值+1
enum class EquipLv:short {
normal,
high ,
rare,
epic,
legend,
myth
};
EquipLv weaponcLv{EquipLv::legend};//申明一个枚举的变量并初始化
std::cout << static_cast<int>(weaponcLv);
认识自定义变量名称,给给类型改名的三种方式:⑴、#define A TypeName//以后代码中的A可以被替换为TypeName ⑵、typedef TypeName A//以后TypeName类型的名字可以用A替换⑶using A=TypeName;//以后TypeName类型的名字可以用A代替
认识命名空间:
//创建命名空间
namespace game
{
int Hp{1000};
namespace wuqi
{
int damage{300};
}
}
int main()
{
//使用命名空间
using game::Hp//以后就不用输入game::Hp,直接Hp就能使用
game::wuqi::damage;
}//命名空间的潜规则,1、不能放在函数体内 2、可以在一个命名空间嵌入另一个命名空间 3、子级命名空间调用父级命名空间依然需要限定符::
认识变量的生命周期:
1、代码块的变量的生命从声明开始,直到这个代码块结束
2、声明在代码开始之前的变量叫做全局变量,全局变量的生命从程序运行开始,直到程序退出
3、在变量名冲突的情况下,采用就近原则
4、要访问名称冲突的全局变量,可以使用限定符::来访问
int a{100};//定义的全局变量,程序结束a销毁
int main()
{
int a{4};
{
int a{350};
{
char a='A';
std::cout<<a;//输出的是A,就近原则
}
}
}
- 数据和计算补充知识位运算之异或运算^,a^b=c,a^c=b,b^c=a;
a=0b01110010;//0b表示二进制
b=0b10110001;
c=a^b=0b11000011;//^算法相同的数为0,不用的为1,
认识自定义数据类型 结构体
//定义
struct 名称
{
类型 名称
};
1、结构体的本子是按照我们自己的方式定义一块连续的内存的结构
2、声明一个结构变量的本质是向计算机申请一块内存,而这块内存的大小,至少是我们定义的结构
成员需要占用的内存之和。
使用结构则是按照我们定义好的方式从这块内存读取和写入数据
struct zhuangbei//我的装备
{
char hujialv{5};//护甲初始的等级
char hujiale{5};//护甲强化等级
}
struct me
{
char nvpengyou{'w'};//我的女朋友姓王
int money{-1000};//我的存款
zhuangbei dengji{100,100};//我的装备
}
int main()
{
//结构的使用 结构名 变量名称{初始化}
me urse{'Y',10};
urse.money;//名称.成员来访问
}
认识位运算
// 位运算之左移<<n 等同于*2^n, 右移>>n 等用于/2^n;
// 11111111 <<2 11111100//11111111左移2位前面的11往下掉2个后面补2个0
// 3 的二进制表示 0b00000011 -3的二进制 0b11111101 3的二进制取反再加1 原先0变1,1变0.
// 求反运算符~ ~0b11110000 等于0b00001111 原先0变1,1变0.
// &与运算 0b10111011&0b10110100 等于0b10110000 两个都是1取1,两个是0或者一个0一个1取0
// |或运算 0b10111011&0b10110100 等于10111111 只要有1个1就取1
// ^异或运算 0b10111011&0b10110100 等于0b00001111 两个不一样取1,两个相同取0
认识关系运算符:>大于 ; <小于 ;>=大于等于 ; <=小于等于; ==等于 ; !=不等于。注意:=是赋值运算符 A=B;表示把B的值赋给A内存的角度来讲,就是把B的值写到A的内存空间去;==是表示关系的运算符 A==B 表示A和B的值相等 如果A和B真的相等 那么(A==B) true 否则A==B是伪命题 即false .注意bool和int之间的互换 bool bA{},bA1{-1};bA等于false,bA1等于true,所有不为0的bool值一律是true包括负数
认识if:
if(bool 表达式)语句;
或者
if(bool 表达式)//条件为真执行语句块内容,条件为假跳过
{
语句;
语句;
}
if(值) if(b)//b不等于0 if(!b)//b等于0
if(a=b)//本质取决于b的值
//项目设计设计一个程序,要求用户输入一个字符,判断这个字符是数字,还是字母,如果是字母,那么是大写字母,还是小写字母,如果是小写字母,那么把这个字母变成大写字母,反之变成小写字母。同时要把判断结果显示出来提示:参考ASCII码表
if(userin>47)
{
if (userin < 58) std::cout << "您输入的是数字:" << userin;
if (userin > 64)
if (userin < 91) std::cout << "您输入的是大写字母"<<userin<<"转换小写字母:" << char(userin + 32) << (char)10;
if (userin > 96)
if (userin < 123) std::cout << "您输入的是小写字母"<<userin<<"转换大写字母:" << char(userin - 32) << (char)10;
}
认识if..else
if(bool 表达式)语句;
else 语句;
或者
if(bool 表达式)
{
语句;
语句;
}
else
{
语句;
语句;
}
int b(2);
if(a==1)
if(b==2) srd::cout<<2;
else
std::cout<<3;//else对应的if(b==2)就近原则
认识逻辑运算符 &&逻辑与 a&&b a和b都为true时表达式为true;||逻辑或 a||b a和b其中任意一个为true时表达式为true;!逻辑非!a a为false时!a为true 。注意1、一元运算符的优先级要大于二元运算符 2、位运算大于逻辑运算 3、~!>&>|。if(a&&b)a和b都不等于0、if(a||b)a和b至少有一个不等于0、if(!a)a等于0
认识条件运算符:
x=bool?y:z; 等同于 if(bool)x=y;else x=z;
if(a^b)
等同
if(((a==true)&&(b==false))||(a==false)&&(b==true))
if((a==true||b==true)&&!(a==true&&b==true))
字符处理:
认识switch
switch(值)
{
case 选项1:
break;//不写break继续往下执行选项二
case 选项2:
break;
case 选项3://选项3选项4一样的情况
[[fallthrough]];//c++17升级内容,告诉编译器我是故意这样不写break
case 选项4:
break;
default:
break;
}
语句块中的变量
if中临时变量的声明 switch中临时变量的声明 C++17新语法
if(条件) switch(值) switch(变量声明;值)
{ { {
变量声明; 类型 变量声明;//错误 case 选项:
} case 选项: break;
else 类型 变量声明;//错误 case 选项:
{ break; break;
变量声明; case 选项: }
} {//要用括号
类型 变量声明;//正确
C++17新语法 break;
if(变量声明;条件) }
{ default:
break;
} }
else
{
}
认识goto
// goto语法
// 标签:
// goto 标签;
//搭配if来使用
char a;
linput:
std::cout<<"请输入一个大写字母,我们将给您转换为小写\n";
std::cin>>a;
if(a>