原创 【博客大赛】《C++ Primer》学习笔记(二)数据类型

2016-3-15 21:06 937 14 16 分类: MCU/ 嵌入式 文集: Qt和Cpp

C++的数据类型和C有很多类似的地方。
但C++不仅可以定义某种数据类型的变量,还可以定义数据类型的操作。这是它和C不同的地方。

类也是数据类型,也可以对它进行加减乘除、左移右移、赋值。
但本节暂时不牵涉到类。

下面是有关基本的数据类型的使用tips:
 • 当值不可能为负时,使用unsigned类型;
 • 整型数据首选int,一般来说,short的长度会不够,更长的数据则使用long;
 • 不要使用char或bool做运算,仅仅使用它们存放字符或真值(char的符号根据架构的不同而不同);
 • 使用double做浮点数,一般来说,float的精度不够,且它们的运算量差别不大,
甚至在有的架构上,double的运算速度还快于float,long double的开销很大,能不用就别用了。

不同的数据类型之间进行赋值,会发生:
 • 当将非bool的值赋给bool,不为0则返回true,为0则返回false;
 • 当将boot的值赋给非bool,为true则返回1,为false则返回0;
 • 将float赋给int,值会被截断,仅仅保留小数点之前的整数;
 • 如果将值赋给小于它位数的无符号类型,返回取模的结果,例如将258赋给unsighed char,则返回2;
 • 如果将值赋给小于它位数的有符号类型,返回结果不确定。

另外,不要假定int的长度。
不要混合signed和unsigned来运算。

C++程序的变量初始化与变量赋值,有区别。
具体区别,以后再说。

标识符的命名惯例:
 • 名称最好能够指示它的实际意义;
 • 变量名称一般小写;
 • 类名称一般首字母大写;
 • 使用下划线或者大写来隔开字母。

在C++里面,可以将变量定义在首次使用它的地方。
实际上,C++推荐这么做,这样变量的含义更明确,初始化也更方便。
而C中的变量,只能定义在函数的开始位置。

空指针请使用nullptr,不要使用NULL。
void *类型的指针表示它可以指向任何类型的数,但是它可执行的操作很有限。
 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

DiracFatCat 2016-3-14 10:43

一起加油吧~

用户595347 2016-3-14 07:31

同看,希望能继续下去,新人求带路…
相关推荐阅读
DiracFatCat 2018-09-05 12:14
【博客大赛】卡尔曼滤波学习笔记(11)从位置估计速度
卡尔曼滤波器,不仅仅是一个低通滤波器,否则也不会持续发展50年。 示例:桑先生需要测试高速列车的性能。测试的目的是判断列车在直线上能否保持80m/s的速度。速度和位置每0.1秒测量一次,但是由于...
DiracFatCat 2018-08-31 19:32
【博客大赛】卡尔曼滤波学习笔记(10)一个简单的示例
《Kalman Filtering: Theory and Practice Using MATLAB》第三章,看不懂,暂时略过。《Kalman Filtering: Theory and Pract...
DiracFatCat 2018-07-19 15:09
对sed命令的练习
sed是流编辑器。它每次处理一个输入,因此很有效率。官方手册:https://www.gnu.org/software/sed/manual/sed.html学习Linux命令,当然要阅读官方手册,所...
DiracFatCat 2018-06-19 15:10
【博客大赛】卡尔曼滤波学习笔记(八)可观测性和可控制性 ...
可观测性是指,在给定模型的情况下,动力学系统的状态是否由它的输入输出唯一确定。可观测性是系统模型的特征。如果传感器矩阵H是可逆的,则本系统可观测,因为有:如果传感器矩阵H某些时候是不可逆的,则本系统仍...
DiracFatCat 2018-06-19 10:56
【博客大赛】卡尔曼滤波学习笔记(七)Z变换
如果我们仅仅对离散线性系统感兴趣,那么就使用下面这个表达式:如果u是常量,那么可以写成:为了简化表达式,我们可以将上面写成:离散线性时不变系统的Φ求解,可以使用Z变换。(* 由于本人已经忘记了Z变换的...
DiracFatCat 2018-06-19 10:54
【博客大赛】卡尔曼滤波学习笔记(六)拉普拉斯变换
对于线性时变/时不变系统,求解Φ(t)有多种方式,拉普拉斯变换是其中一种。(* 由于本人已经忘记了拉普拉斯变换的内容,因此本节待续。)...
EE直播间
更多
我要评论
2
14
关闭 站长推荐上一条 /3 下一条