c++基础知识笔记

c++基础知识笔记,第1张

数据类型总结

  • 整数型数据类型
    • 数值整数类型

      short 2 字节
      int   4字节
      long  4字节
      long long 8字节
      1byte=8bite 所以一字节可以表示8位
      
    • 字符整数类型型数据

      char 占一字节
      一个char变量只能被赋值一个字符
      char整数型赋值时值为整数对应的ASCII的值
      

整数型数据与字符整数型数据相加结果为整数与字符所对应的ASCII编码值相加的和

  • 浮点型数据
float 4字节 有效位数6位
double 8字节 有效位数15位
long double 16字节

不同数据类型进行运算时,低精度像高精度转变,字节越多精度越高。

基本算数与赋值运算符

a+=b means a=a+b;

运算符优先级:赋值运算符<逻辑运算符<关系运算符<位运算符<算术运算符

位运算与表达式
1byte=8bit 位运算是指每一位之间的运算,将数据转化为2进制数再将运算完的结果转换会十进制数。

c++位运算包括下面六种

  • 按位与运算符&

  • 按位或运算符|

  • 异或运算符^

  • 按位取反运算符~

在计算机中所有二进制数都是使用补码保存的,正数的补码就是原码本身,负数的补码为符号位不变其余位取反再+1.
~A=-A-1 (A>0) 一个正数按位取反得到的是一个比它相反数还小1的负数

  • 左移运算符<<
A<<2 表示A的二进制数向左移两位,右端补零。

未超过表示范围的情况下移动几位相当于乘了几次2

  • 右移运算符>>
尖尖朝哪就是向哪移

按位运算符只能对字符整型以及数值整型数据类型的常量或变量使用,不能对浮点类型数据进行计算。

按位运算符优先级由高到低:~ ,>> <<,&,^,|

关系与逻辑表达式

  • 关系运算符
    关系运算符主要有六种:>,<,<=,>=,=,!=
    关系运算中可以是整数或字符,但不能是字符串。


    关系运算最后返回一个bool值,真为true,假为false。


    判断浮点数是否相等一般不用‘==’或‘!=’,因为会产生误差,当两个浮点数之间的误差小于一定精度时视为相等。

  • 逻辑运算符
    逻辑运算符主要有三种:&&,||,!

三元运算符 :(表达式)?A:B;

switch语句

switch (变量名) {
    case 变量可能的情况1: 执行语句1; [break;]
    case 变量可能的情况2: 执行语句2; [break;]
    ...
    // 可以有任意数量的 case 语句
    default: 执行语句n;
}

for循环

for(表达式1; ;表达式3) 可理解为 (表达式1; 1 ;表达式3)
break:跳出循环,整个循环终止。

continue:跳过当前循环体,强制进入下一次循环。

for循环执行循环的条件中‘=’表示关系运算符,‘= =’才判定相等

while 语句

while 与 do-while语句的区别是 do-while语句至少执行一次,while语句不满足条件是可以一次都不执行。

数组
数组长度固定、元素类型相同
数组名表示数组的起始地址

数组赋值:
i、确定数组长度依次全部赋值:
int var[3]={1,2,3}

ii、确定数组长度部分赋值:
int var[6]={1,2,3}    //未赋值的元素为0

iii、不确定数组的长度全部赋值:
int var[]={1,2,3}     //数组的长度为3

字符数组

字符数组的赋值:
①挨个赋值:
char str1[5]={'w','o','r','l','d'};  //长度为5
未赋值部分默认值为 '/0'
②整体赋值:
char str1[20]="world";  //长度为6
末尾默认加上一项 '/0'
字符串数组以终止符为'0/'
字符串常用函数:
strcat(s1, s2) 连接字符串 将s2 接到s1后面
strlen(s1) 获取字符串长度,有效字符串长度,不包括'0/'
strcmp(s1, s2)比较字符串的字典序,相同返回0,前小返回小于零,前大返回大于零
strcpy(s1, s2)复制字符串,将s2字符串覆盖s1字符串,剩余部分不变,终止符后的不输出。

string

使用string数据类型需要导入头文件 #include

字符数组型字符串会使用 strcat(s1, s2) 函数把字符串 s2 连接到 s1 的末尾。

string 类型可以直接使用 s1 + s2 连接两个字符串。

获取字符串长度 字符数组型字符串会使用 strlen(s1) 函数返回字符串 s1 的字符数。

string 类型可以直接使用 s1.size() 或者 s1.length() 返回字符串 s1 的字符数。

比较字符串的字典序 字符数组型字符串会使用 strcmp(s1, s2) 函数比较两个字符串之间的字典序: 如果s1和s2是相同的,会返回0 如果s1在s2前面,则返回值会小于0 如果s1在s2后面,则返回值会大于0 string 类型可以直接使用关系运算符来比较两个字符的字典序: 如果s1 < s2为1(真),就表示s1的字典序在 s2前面 如果s1 < s2为0(假),就表示s1的字典序不在 s2前面 复制字符串 字符数组型字符串使用 strcpy(s1, s2)函数复制字符串 s2到字符串 s1。

string 类型可以直接使用赋值表达式 s1 = s2来复制字符串 s2到字符串 s1。

string 常见 *** 作如下图:

函数

  • 递归函数
递归函数两大要素:
递归关系
递归终止条件

结构体

结构体定义:
struct varname{

vartype varname1;

};

结构体变量声明:
在创建结构体时声明:
struct Student{    
    int number, birth_year;
    string name;
} zhang_san, li_si, wang_mazi;

结构体初始化:
①挨个初始化:Student zhang_san = {1, 2000, "ZhangSan"};
②在构建时带默认值初始化:
struct Student{    
    int number, birth_year;
    string name;
    
    // 在结构体里定义构造函数
    // 在初始化时所有学生的出生年份都被设置为2000
    // 可以传入两个参数,分别代表学号和姓名,如果不传入参数,默认学号为0,姓名为""
    Student (int num=0, string n="") {
        number = num;
        birth_year = 2000;
        name = n;
    }
};

// 初始化时只用传递两个参数即可
Student li_si(2, "LiSi");

访问结构体变量的某个成员:
使用变量访问: varname.component
使用指针访问:  varname.component


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/662300.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存