高程整理10-其他
其他
零散的一些东西,不能被归入哪个大主题
头文件
- 用于多源文件项目的公共信息传递。正如前面的课程所说,一个源程序需要使用函数,要使用全局变量,都是需要在前面声明的,每一个源程序都这样去声明一样的东西,会很麻烦且维护性差,那么就可以把一样的东西都写到头文件里去
- 头文件里可以含有:
- 符号常量
- 常变量
- 函数、全局变量的extern、结构体、类 的声明
- 不能放全局变量的定义
- 不建议在头文件里面把类似
#include <iostream>啊,using namespace std;啊这种都写进去,每次引一下自己的头文件就好了。这样看似快,但是违背了权限最小化原则,把很多东西在不知道的情况下放了出来。 #include <xxx>会优先在系统目录里找,找不到报错;#include "xxx"优先在当前文件夹找,找不到去系统目录找,找不到报错。- 头文件里的
#pragma once代表让这个头文件只能被#include一次
一些头文件说明
- C++ 原生没有字符串变量,用字符数组来模拟。
#include<string>是一个封装,里面的是新增的string类。 cstdio和cmath两个库在Visual Studio中被iostream包含,可以缺省,其他的要加。
格式化代码
- 一个设置仅对一个解决方案有效。不同解决方案要反复设置
- 每次保存代码都会自动给你格式化
Ctrl+K+F将选中代码格式化Ctal+K+D将全部代码格式化
vs的调试功能
先设置断点,代表你想在什么地方的之后开始看看程序在搞什么,方便定位位置
f5直接按,进入调试
f10往下运行一句,f11可以进入函数看看函数里面怎么运行的,系统函数要自己去设置才能看。
输入输出重定向
1 | 程序.exe 0<in.dat 1>a.txt 2>&1 |
- 这个数字012分别代表:标准输入,标准输出,错误输出(错误的日志之类的)
- 2>&1代表把错误输出也输出在1输出的东西后面。这个实际上是让错误和普通输出同时输出,不是在整个程序的标准输出结束以后再追加错误输出。
字符串输入大汇总
cin >> str1 >> str2;cin.get(str,n,'\n')cin.getline(str,n,'\n')scanf("%s%s",&str1,&str2)gets(str)/gets_s(str)fgets(str,n,stdin)
字符输入大汇总
其他
- x86就是32位的意思,只是最早IntelCPU叫什么8086,叫习惯了
- ASCII码表考试会给出。ASCII 码要记的就 4 个:
32/0x20 ’ ’
48/0x30 ‘0’
65/0x41 ‘A’
97/0x61 ‘a’ - GB2312 的使用必然导致扩展 ASCII 码的那些符号用不了,所以在 GB2312 里面又对那些符号重新定义了一些新的编码。
- 分解浮点数位数的时候,因为浮点数存在误差,可能比实际数小,为了让这个误差不影响数位上实际的数字,在最初的浮点数后面+1e6(也可以是其他小于要处理问题精度、大于数据类型精度的数字)
- sin函数的参数是弧度制的
- 少用
pow(x,y)!如果你确定求幂,底数指数都是整数,用循环迭代,不要用pow。pow为了支持浮点数进行运算,从实现方式来讲肯定是exp(y*log(x))这种,用的泰勒展开式来逼近,可能有误差。 - 对于高精度的计算,不推荐使用C/C++,应当使用matlab/Python,专门用来搞科学计算。
#define 符号常量标识符 符号常量会把标识符出现的地方全部替换成后面的符号常量。- vs有的时候编译不太对,右键项目清理或者重新生成,就好了
- 绝大部分的架构(x86,x64,ARM,RISC-V)都是小端序,也就是在一个类型的数据中,把低位存到前面来,人的阅读要倒过来。但是数据之间的顺序还是正常的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 PhyCmdBlock的博客!