作为一个java开发者,由于实际需要最近开始接触C++,这是最近接触C++碰到的一些难点和易错点,整理如下,给自己和其他C++的初学者····
通过本文,你可以学到:
1)浮点值的上溢和下溢
2)浮点数舍入误差
3)使用%d显示float值不会把float转化为近似的int值,而是显示垃圾值
4)scanf的读取习惯
5)strlen()函数和sizeof()区别
6)负数转化为unsigned和大于255的值转化为字符相当于取模
7)prinf读取stack里的数字是按%读取的
1.浮点值的上溢和下溢:
如:假设系统最大的float的值为3.4E38,并进行如下操作:
float toobig =3.4E38*100.0f;
print("%e\n",toobig);
这会发生上溢(overflow),pronf()函数显示的值是inf或infinity(或者这个含义的其他名称)
当除以一个很小的数时,如0.1233E-10除以10,结果将失去一位精度,变为0.0123E-10,这种现象称为下溢(underflow).
另外如用asin()返回反正弦值,但输入参数却大于1时返回NaN(Not-a-Number)
2.浮点数舍入误差
将一个数加上1再减去原数,结果为1.如果用浮点计算,可能会有其他结果,如