2020 1月6日
First_week 1.6-1.12
- | Study_update |
---|---|
Mon. | 递增和递减运算符①,条件运算符 cond?:expr1:expr2② |
Tue. | 位运算符(未搞懂),二进制(了解),模板①,函数模板②,,sizeof运算符③,逗号运算符 |
Wed. | 类型转换(命名的强制类型转换)① |
Thur. | 简单语句,语句作用域,条件语句,if |
Fri | switch①,迭代语句while②, |
Sat | |
Sun. |
1.6 Monday
①除非必须,否则不用递增递减运算符后置版本,因为后置版本需要存储原始值以便于返回这个未修改的内容,这会对性能有一定影响。
②条件运算符可以嵌套。但是随着嵌套的层数增加,代码可读性急剧下降。
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "请输入成绩" << endl;
int input;
while (cin>>input&&input<=100)
{
string str;
str = input > 90 ? "优秀" : input > 60 ? "及格" : "不及格";//条件运算符嵌套
cout << str;
}
}//洋葱骑士
由于条件运算符的优先级非常低,长表达式建议在两端加上括号.特别是输出表达式。
1.7 Tuesday
位运算符
位与&,位或|,位异^,位反~,左移运算符<<,右移运算符>>.
①模板
定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。
分类:函数模板、类模板。
作用:模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。
理解(对比函数重载):
———重载函数:如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载函数。这些函数接受的形参类型不一样,但是执行的操作非常类似。
1: int max(int x, int y) { return x > y ? x : y ; }
2: float max(float x, float y) { return x > y ? x : y ; }
3: double max(double x, double y) { return x > y ? x : y ; }
——— 模板:模板把类型参数化,即把上面的int/float/double定义为参数。
②
定义:函数模板,就是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。
注意:1.凡是函数体相同的函数都可以用这个模板来代替,不必定义多个重载函数。 2.在调用函数时,系统会根据实参的类型来取代模板中的虚拟类型, 从而实现了不同函数的功能。
声明形式:
template <类型形式参数表(class/typename)>
返回类型 函数名 (形参列表)
{
函数体
}
示例
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
template <typename T>//函数模板的声明
T add(T a,T b)
{
T res = a + b;
return res;
}
int main()
{
int a = 1, b = 2;
int res = add(a, b);//int 类型
string stra = "hello ", strb = "world";
string strres = add(stra, strb);//string类型
cout << res << endl;
cout << strres << endl;
}//洋葱骑士
当函数模板被调用时,编译器会生成相应的模板函数。
注意:
1.函数模板的声明由模板说明和函数定义组成,template为模板关键字。
2.模板说明中的类型形式参数(T)在函数定义中至少出现一次。
3.函数参数列表中可以使用类型形式参数(T),也可以使用一般类型参数(int/char等)。
4.函数模板不允许自动类型转换。
③sizeof
sizeof运算符返回一条表达式或一个类型名字所占的字节数。
运算对象有两种形式,
sizeof(type)
sizeof expr
在第二种形式中,sizeof返回的是表达式结果类型的大小,并不实际计算其运算对象的值。
1.8 wednesday
①命名的强制类型转换
cast-name< type >(expression)
其中,type是转换的目标类型而expression是要转换的值。如果type是引用类型,则结果为左值。
cast-names是static_cast,dynamic_cast,const_cast和reinterpret_cast中的一种。
1.9 Thursday
简单语句
表达式语句的作用是执行表达式并丢掉求值结果。
语句块不以分号作为结束。
1.10Friday
①Switch
switch先对括号内的表达式进行求值,表达式里的值转换成整数类型,然后与每一个Case进行比较。
如果表达式与某个case匹配成功,执行该标签后的语句,直到到达switch的结尾或者是遇到一条Break语句为止。
case关键字和它对应的值一起被称为Case标签(case label)。case标签必须是整型常量表达式。任何一个Case标签的值都不能相同,否则会引发错误,default也是一种特殊的case标签。
②while
迭代语句通常称为循环,它重复执行某个操作直到满足某个条件为止,while和for在语句在执行循环体之前检查条件,do while语句先执行循环体,然后再检查条件。
当不确定要迭代多少次时,使用while循环比较好。
来源:CSDN
作者:洋葱骑士_1995
链接:https://blog.csdn.net/weixin_46146882/article/details/103864160