2020.01-Study_update

元气小坏坏 提交于 2020-01-11 04:57:21

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循环比较好。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!