笔者需要参与一项slam项目的开发,经年不用C++知识已经统统上交给了国家,尤其是现在用python炼丹调参不亦乐乎,怕是一时都改不过来习惯。
故决定速刷C++primer(六)一书,把忘掉的东西捡起来,希望不要和python搞混。
(只是熟悉语法的话看菜鸟教程查表更快,但是为了摸鱼汇报进度还是过一下书吧)
Hello World
//hello world
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
void weightyou();
int main()
{
int age;
cout << "Hello World!" << endl;
weightyou();
return 0;
}
int kg2g(float kg)
{return kg*1000;}
void weightyou()
{
float weight;
cout << "Please input your weight:_____Kg\b\b\b\b\b\b\b";
cin >> weight;
cout << "Your weight:" << kg2g(weight) << "g\n";
}
一个典型的cpp包含以下几个要素:
- 注释,由//标识
- 预处理器编译指令,引入库,#include<>
- 编译指令using namespace std
- 函数,int main( //参数声明 ){ //函数体 }
- return值,如果函数声明为void类型则不需要return
换行符:cout << "xxx" <<endl
或者cout << "xxx\n"
,显然,输出字符串时用\n方便,输出变量时用endl方便。
变量声明:变量及函数均需要声明类型,如void、char、int、float、double等,系统将分配内存空间。
处理数据
变量
变量名命名规则:字母数字下划线组合,区分大小写,且首位不能是数字。
字节与位:1byte = 8bit,bit即位,表示一个0/1的可能存在。另常见的1kB = 1024byte…
初始化:int x = 12
或int x(12)
或int x = {12}
或int x{12}
转义编码:对特殊符号用反斜杠转义\
\t | \n | \b |
---|---|---|
制表符 | 换行符 | 退格符 |
const标识:const int Fuck = 12
设定为常量,一般首字母大写作为标记
整型
类型有:char、short、int、long、long long
- 要注意char也是整型的一种,一般表示字符串。
- 其他每种均有unsigned和signed区别正负,无符号可以扩展表示区域。溢出时从另一端步进。
- 16位int表示区域即-32768~32767,因为从0开始编码,所以正数“看起来”少一位。如果无符号则表示区域为0-65535。
- 进制转换:用
cout<<oct
控制符转换,同理cout<<hex
和cout<<dec
- 一般默认为int型,除非加后缀如
347.6F
、296UL
等
浮点型
类型有float、double、long double
- 科学计数法:
+3.56e-2
表示0.0356,注意前后两个正负号的区别,一个是数值正负,一个是小数点左右移动的方向。 - 速度慢,精度低
算术符号
+、 - | * 、/ 、% |
---|---|
优先级低 | %求模只能整型,除法可重载自适应 |
除此以外还有组合赋值及递增操作。
+= | -= | ++,- - |
---|---|---|
*= | /= | %= |
void BMI()
{
const int f2i = 12;
const float k2b = 2.2;
const float i2m = 0.0254;
int foot_y,inch_y;
float pound_y;
cout << "input your height:__foot\b\b\b\b\b\b";
cin >> foot_y;
cout << "input your height:__inch\b\b\b\b\b\b";
cin >> inch_y;
cout << "input your weight:___pound\b\b\b\b\b\b\b\b";
cin >> pound_y;
float height_y = foot_y * f2i + inch_y;
height_y *= i2m;
float weight_y = pound_y / 2.2;
float BMI_y = weight_y / (height_y*height_y);
cout << "BMI指数为:" << BMI_y;
}
摘取一道课后练习。
相关练习均已上传github。