使用除法的注意事项

double b = 4.0 * 1/239.0;

因为整数相除结果取整,如果参数写1/239,结果就都是0

浮点数注意事项

浮点数是近似存储,所以不能直接比较两个浮点数的大小,

可以比较差值小于10的多少负多少次方.

逗号运算符

a=3 * 5,a * 4;

先计算左边,后计算右边,结果返回右边,a=60.

sizeof

sizeof(类型名)

sizeof 表达式

计算所占字节数


位操作

& :某些位置0 或者 取出制定位;
| :某些位置1;
^ :特定位翻转;
<< :低位补0,高位舍弃;
>> :低位舍弃,无符号高位补0,有符号高位补符号位

循环

do-while :与while的差别在于“至少执行一次”;
break :从循环体或switch语句中跳出;
continue :结束此次循环,判断是否进行下一次循环;

自定义类型

为已有类型另外命名

1.
typedef double Number;
Number i; typedef int sum;
sum x;
2.
using Number=double;
using sum=int;

枚举类型

enum weekday={sunday=7,monday=1,tuesday,wednesday,thursday,friday,saturday};

auto类型

编译器通过初始值自动推断变量的类型
auto val = val1 + val2;
如果 val1+val2 是 int 类型,则 val 是 int 类型;

deltype类型

定义一个变量与某一表达式的类型相同,但并不用该表达式初始化变量
例如:decltype(i) j = 2;
j的值为2,但是和i类型相同

函数的调用

若函数定义在调用点之前,可以不另外声明;

若函数定义在调用点之后,必须要在调用函数前声明函数原型:

函数递归

将参数为n的问题拆解为n-1的问题,依次往下拆解,到简单的求解步骤递归结束,依次返回进行计算,最终得出结果。

引用

return只能返回一个值,当需要查看多个值的时候可以用引用。

1.定义时发生绑定,且生存周期中只能绑定一个变量;

2.引用不是对象,不在程序中不占用内存空间,没有地址,无法被指针找到

就像是目前在追的小说《剑来》中上五境大佬的分身,本尊端坐云端,分身下界经历一些事情,消散后本尊可以收获下界历练所经过的一切,且分身本身不占据一份新的气运。

含有可变参数的函数

initializer_list <类型名> lst;

必须同类型,C++11标准新加的;

用到再说。

内联函数

编译时在调用处用函数体进行替换,不走“调用子函数再返回调用点”这样相对开销较大的流程,节省了参数传递、控制转移等开销。

inline声明只是一个对编译器的建议,好的编译器自己有优化功能,不一定采纳。
p.s.内联函数体内不能有循环语句和 switch 语句;

带默认参数值的函数

特点:可以预先设置默认的参数值,调用时如给出实参,则采用实参值,否则采用预先设置的默认参数值。

在何处写默认值

1.函数体定义在调用之后,或者在另一个文件中,则需要把默认参数写在声明中,而函数体定义中不能再写;

2.函数体定义在调用之前,则不需要声明,直接在定义中的形参列表中写就可以了;

有默认参数的形参必须列在形参列表的最右

int add(int x, int y = 5, int z = 6);//正确
int add(int x = 1, int y = 5, int z);//错误

函数重载

作用:可以用同一个函数名来处理参数不同的同一类运算;

要求:形参必须不同,个数不同或类型不同

与返回值类型无关

幕间:VS 2013 Debugger

F10:step over是逐过程,不看调用细节;

F11:step into是逐语句,可以查看调用函数内部;

ctrl+F10:run to cursor运行到光标处,也可以右键寻找;

清华大学《C++语言程序设计基础》线上课程笔记01---基础概念与一些注意事项的更多相关文章

  1. 清华大学《C++语言程序设计基础》线上课程笔记03---数据的共享和保护&数组

    数据的共享和保护 对象的生存期 static类型的局部变量,生存期在整个程序,局部可见. void example() { static a=1; int b=2 } 当调用完example函数后,b ...

  2. 清华大学《C++语言程序设计基础》线上课程笔记02---类与对象

    类与对象 public是类的对外访问接口: 类内初始值 在定义类时对数据成员写初始值,在创建对象的时候,会使用类内初始值初始化数据成员: class Clock { public: void show ...

  3. 清华大学《C++语言程序设计基础》线上课程笔记04---指针

    指针 static int i; static int* ptr = &i; 此处的*表示ptr是指针类型(地址类型),用来存放目标数据的地址 其本身也有地址,所以又指向指针的指针; *前面的 ...

  4. 清华大学《C++语言程序设计基础》线上课程笔记05---vector对象,对象的复制与移动,string类

    vector 对象 C++标准库中的一个类模板 封装任何类型的动态数组,自动创建和删除. 数组下标越界检查. 将动态数组封装成类的知识点中封装的ArrayOfPoints也提供了类似功能,但只适用于一 ...

  5. 清华大学《C++语言程序设计进阶》线上课程笔记06---继承、派生、多态性

    类的继承 保持已有类的特性而构造新类的过程称为继承; 实现设计与代码的重用. 在已有类的基础上新增自己的特性而产生新类的过程称为派生 当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程 ...

  6. 软件工程线上课程(C语言实践篇)学习心得总结

    林牧 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 软件工程的理 ...

  7. C语言程序设计基础-第1周作业-初步

    1.安装带有计算机术语的翻译软件 2.在自己电脑上安装C编译器,windows系统建议安装dev-c++,其他系统自行查找. 3.加入课程小组,有任何疑问可以在小组中提问:https://group. ...

  8. 欢迎参加MVP主讲的Windows 10开发线上课程

    博客地址:http://blog.csdn.net/FoxDave Windows 10 Developer Readiness - Powered by MVPs - 由微软最有价值专家(MVP)主 ...

  9. C语言程序设计基础知识点概括

    C语言程序设计基础知识点概括 C语言程序设计基础知识点1.函数是C语言的基本构成单位.main函数是C语言程序的唯一入口.2.C语言程序开发过程. 编译过程:将以.c或.cpp结尾的源程序文件经过编译 ...

随机推荐

  1. IFrame安全问题解决办法(跨框架脚本(XFS)漏洞)

    最近项目要交付了,对方安全测试的时候检测出高危险漏洞,由于刚参加工作不久,经验不足,未涉及过此方面的东西.经过一番查询和探索,最终解决了这个问题,记录一下. 发现的漏洞为缺少跨框架脚本保护.跨框架脚本 ...

  2. 关于method not exist:think\db\Query->render错误解决方法

    {volist name="Teachers" id="Teachers" key="key"} <tr> <td> ...

  3. React总结和遇到的坑

    一.react项目 前端react后端node:https://github.com/GainLoss/react-juejin 前端react后端Pyton:https://github.com/G ...

  4. 【[AH2017/HNOI2017]礼物】

    题目 又是我不会做的题了 看看柿子吧 \[\sum(a_i+c-b_i)^2\] 最小化这个柿子 之所以不写下标是因为我们这个\(\{a\},\{b\}\)可以循环同构 那就开始化吧 \[\sum(a ...

  5. 【[AHOI2012]树屋阶梯】

    卡特兰数! 至于为什么是卡特兰数,就稍微说那么一两句吧 对于一个高度为\(i\)的阶梯,我们可以在左上角填一个高度为\(k\)的阶梯,右下角填一个高度为\(i-1-k\)的阶梯剩下的我们用一个大的长方 ...

  6. [USACO17FEB]Why Did the Cow Cross the Road II P

    嘟嘟嘟 考虑dp. 对于ai,和他能匹配的bj只有9个,所以我们考虑从这9个状态转移. 对于ai 能匹配的一个bj,当前最大的匹配数一定是[1, j - 1]中的最大匹配数 + 1.然后用树状数组维护 ...

  7. CF578C Weakness and Poorness

    嘟嘟嘟 题面:给一个序列中的,每一个数都减去一个实数x,使得到的新序列的max(最大连续和,|最小连续和|)最小.(|ai| <= 10000) 感性的想想,会发现最大连续和随x变大而变小,最小 ...

  8. POJ 3565 Ants 【最小权值匹配应用】

    传送门:http://poj.org/problem?id=3565 Ants Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: ...

  9. HDU 5258 数长方形【离散化+暴力】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5258 数长方形 Time Limit: 2000/1000 MS (Java/Others)    Me ...

  10. linux jdk环境变量配置

    export JAVA_HOME=/home/faunjoe/java/jdk1.8.0_45export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$J ...