C++基础,前端开发优秀作品

cout << “long: \t\t” << “所占字节数:” << sizeof(long);

cout << “\t最大值:” << (numeric_limits::max)();

cout << “\t最小值:” << (numeric_limits::min)() << endl;

cout << “unsigned long: \t” << “所占字节数:” << sizeof(unsigned long);

cout << “\t最大值:” << (numeric_limits::max)();

cout << “\t最小值:” << (numeric_limits::min)() << endl;

cout << “double: \t” << “所占字节数:” << sizeof(double);

cout << “\t最大值:” << (numeric_limits::max)();

cout << “\t最小值:” << (numeric_limits::min)() << endl;

cout << “long double: \t” << “所占字节数:” << sizeof(long double);

cout << “\t最大值:” << (numeric_limits::max)();

cout << “\t最小值:” << (numeric_limits::min)() << endl;

cout << “float: \t\t” << “所占字节数:” << sizeof(float);

cout << “\t最大值:” << (numeric_limits::max)();

cout << “\t最小值:” << (numeric_limits::min)() << endl;

cout << “size_t: \t” << “所占字节数:” << sizeof(size_t);

cout << “\t最大值:” << (numeric_limits<size_t>::max)();

cout << “\t最小值:” << (numeric_limits<size_t>::min)() << endl;

cout << “string: \t” << “所占字节数:” << sizeof(string) << endl;

// << “\t最大值:” << (numeric_limits::max)() << “\t最小值:” << (numeric_limits::min)() << endl;

cout << “type: \t\t” << “size**”<< endl;

return 0;

}

实型
科学计数法

3e2 =3*10^2

3e-2 = 3*10^-2

单精度

float 4 个字节 精度型占4个字节(32位)内存空间

+/- 3.4e +/- 38 (7位有效数字)

双精度

double 8 个字节 双精度型占8 个字节(64位)内存空间

+/- 1.7e +/- 308 (15~16位有效数字)

长双精度

long double 16 个字节 长双精度型 16 个字节(128位)内存空间

可提供18-19位有效数字。

细节

//如果是float建议后面加上f,

因为编译器的小数默认是double,编译时会先从double转化为float

float a = 3.14f;

double b= 3.14;

字符型
作用:

显示单个字符

语法:

char ch = ‘a’; 字节:1个 范围: -128 到 127 或者 0 到 255

注意:

用单引号括字符,不能用双引号,单引号内只能有一个字符,不能有字符串

ascii码和转义字符

//字符型变量对应的ASCII编码 ‘a’-97 ‘A’-65

char ch =‘a’;

cout<<ch<<" "<<(int)ch<<endl;

//常用转义字符

\n //换行 ASCII值 10

\t //水平制表符 ASCII值 9

\ //一个反斜线

字符串

//C语言

char str[]=“hello world”;

cout<<str<<endl;

//c++

//带头文件,当然还是看编译环境有些环境不用加

string str = “hello world”;

cout<<str<<endl;

布尔(bool)

//非零为真

//占1个字节大小

bool flag = true(本质是1);

cout<<flag<<endl;

数据输入

标准输入流(cin)

预定义的对象 cin 是 iostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >> 结合使用的,

//cin>>变量

int a;

cin>>a;

cout<<a;

//其他类型类似

运算符
算式运算符

| 运算符 | 描述 | 实例 |

| — | — | — |

| + | 把两个操作数相加 | A + B 将得到 30 |

| - | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |

| * | 把两个操作数相乘 | A * B 将得到 200 |

| / | 分子除以分母 | B / A 将得到 2 |

| % | 取模运算符,整除后的余数 | B % A 将得到 0 |

| ++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |

| – | 自减运算符,整数值减少 1 | A-- 将得到 9 |

注意:

1.整数/整数=整数。

2.B = A++,先赋值再自增。B = ++A,先自增在赋值。

3.只有整型可以进行取模

关系运算符

| 运算符 | 描述 | 实例 |

| — | — | — |

| == | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A == B) 不为真。 |

| != | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (A != B) 为真。 |

| > | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 不为真。 |

| < | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |

| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 不为真。 |

| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |

逻辑运算符

| 运算符 | 描述 | 实例 |

| — | — | — |

| && | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (A && B) 为假。 |

| || | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (A || B) 为真。 |

| ! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(A && B) 为真。 |

位运算

位运算符作用于位(二进制),并逐位执行操作。&、 | 和 ^

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101


A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

下表显示了 C++ 支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:

| 运算符 | 描述 | 实例 |

| — | — | — |

| & | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 |

| | | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 |

| ^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 | (A ^ B) 将得到 49,即为 0011 0001 |

| ~ | 二进制补码运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0。 | (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。 |

| << | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 将得到 240,即为 1111 0000 |

| >> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2 将得到 15,即为 0000 1111 |

赋值运算符

| 运算符 | 描述 | 实例 |

| — | — | — |

| = | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | 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 |

| |= | 按位或且赋值运算符 | C |= 2 等同于 C = C | 2 |

杂项运算符

| 运算符 | 描述 |

| — | — |

| sizeof | sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。 |

| Condition ? X : Y | 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。 |

| , | 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。 |

| .(点)和 ->(箭头) | 成员运算符用于引用类、结构和共用体的成员。 |

| Cast | 强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。 |

| & | 指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。 |

| * | 指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。 |

符号优先级

运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

| 类别 | 运算符 | 结合性 |

| — | — | — |

| 后缀 | () [] -> . ++ - - | 从左到右 |

| 乘除 | * / % | 从左到右 |

| 加减 | + - | 从左到右 |

| 移位 | << >> | 从左到右 |

| 相等 | == != | 从左到右 |

| 位与 AND | & | 从左到右 |

| 位异或 XOR | ^ | 从左到右 |

| 位或 OR | | | 从左到右 |

| 逻辑与 AND | && | 从左到右 |

| 逻辑或 OR | || | 从左到右 |

| 条件 | ?: | 从右到左 |

| 赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |

| 逗号 | , | 从左到右 |


流程结构
选择结构
if语句

//双分支

if(boolean_expression)

{

// 如果布尔表达式为真将执行的语句

}

else

{

// 如果布尔表达式为假将执行的语句

}

//多分支

if(boolean_expression)

{

// 如果布尔表达式为真将执行的语句

}

else if(boolean_expression1)

{

// 如果布尔表达式为假将执行的语句

}

else if()

//嵌套

if( boolean_expression 1)

{

// 当布尔表达式 1 为真时执行

if(boolean_expression 2)

{

// 当布尔表达式 2 为真时执行

}

}

switch语句

/*

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

**/

switch(expression){

case constant-expression :

statement(s);

break; // 可选的

case constant-expression :

statement(s);

break; // 可选的

// 您可以有任意数量的 case 语句

default : // 可选的

statement(s);

}

  • switch 语句必须遵循下面的规则

  • switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。

  • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。

  • case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。

  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。

  • 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。

  • 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。

  • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

循环结构
while

while(condition)

{

statement(s);

}

do while

/*

不像 for 和 while 循环,它们是在循环头部测试循环条件。do…while 循环是在循环的尾部检查它的条件。

do…while 循环与 while 循环类似,但是 do…while 循环会确保至少执行一次循环。

*/

do

{

statement(s);

}while( condition );

for

for ( init; condition; increment )

{

statement(s);

}

/**

1.init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。

2.接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。

3.在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。

4.条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

*/

/**

基于范围的for循环(C++11)

for 语句允许简单的范围迭代:

*/

int my_array[5] = {1, 2, 3, 4, 5};

// 每个数组元素乘于 2

for (int &x : my_array)

{

x *= 2;

cout << x << endl;

}

// auto 类型也是 C++11 新标准中的,用来自动获取变量的类型

for (auto &x : my_array) {

x *= 2;

cout << x << endl;

}

循环控制

| 控制语句 | 描述 |

| — | — |

| break 语句 | 终止 loopswitch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。 |

| continue 语句 | 引起循环跳过主体的剩余部分,立即重新开始测试条件。 |

| goto 语句 | 将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。 |


数组
一维数组

数组名的作用:

1.可以统计整个数组的在内存的长度 sizeof(arr);

2.可以获取数组在内存的首地址

/*声明数组/

//type arrayName [ arraySize ];

int a[100];

/初始化/

//指定数组长度

double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

double balance[5] = {1000.0};//没有全部初始,后面默认为0

//不指定长度

double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

/*访问/

//用下标(从0开始)访问

cout<<balance[0]<<endl;

二维数组

数组名的作用:

1.可以统计整个数组的在内存的长度 sizeof(arr);

2.可以获取二维数组在内存的首地址

/**

多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组,形式如下:

type arrayName [ x ][ y ];

*/

/**

初始化二维数组

*/

int a[3][4] = {

{0, 1, 2, 3} , /* 初始化索引号为 0 的行 */

{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */

{8, 9, 10, 11} /* 初始化索引号为 2 的行 */

};

//内部嵌套的括号是可选的,下面的初始化与上面是等同的:

int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};

/**

访问二维数组元素

*/

//二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。例如:

int val = a[2][3];

动态数组–vertor
向量容器vector
  1. 动态数组,运行阶段设置长度

  2. 具有数组的快速索引

  3. 可以插入和删除

定义和初始化

vector vec1;

vector vec2(5);//假定数据宽度为5

vector vec3(20,998)//默认20个元素每个都是998

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

更多面试题

**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

r vec1;

vector vec2(5);//假定数据宽度为5

vector vec3(20,998)//默认20个元素每个都是998

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-XmsPL6JP-1712067761042)]
[外链图片转存中…(img-snqyCkWS-1712067761042)]
[外链图片转存中…(img-u3BolglX-1712067761043)]
[外链图片转存中…(img-PHHSO2rZ-1712067761043)]
[外链图片转存中…(img-SFDNVm0K-1712067761043)]
[外链图片转存中…(img-rO0R1MHg-1712067761044)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-gUjH7qWm-1712067761044)]

更多面试题

**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-tgrMbwNi-1712067761045)]

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值