1.int的大小恒定就是32位么?
不是的,int大小是跟着系统走的,不是在各个系统里固定不变的。
32位系统int就是32位。64位系统,int就是64位。short 和long的长度则跟着long走,一般来说int是32位,short就是16位,long就是64位。
2.复数和虚数需要包含<complex.h>头文件
float_Complex double_Complex long double_Complex 包含两个值是实部和虚部。需要包含头文件才可以使用complex代替_Complex, imaginary代替_Imaginary, I代替-1的平方根 。为啥需要引用头文件,为了防止冲突。如果不引用头文件,_Complex _Imaginary可用。
3.浮点数计算结果错误怎么回事?
比如浮点数2.0E20+1要除以2需要动第21位小数,但是小数不够啊,结果就错了。如果2.0E4+1就可以了。小数部分和指数部分都不超限,数据就正常。 浮点数的表示方法很多种,IEEE将其统一了,并在C99和C11可选。
4.infinity是啥意思?
浮点型数据,超过最大值会上溢。inf 或是infinity。低于正常值的浮点值,下溢(0.1234E-10 /10 应该是0.1234E-11,但是指数最小就是-10,不能-11,咋办?变成了0.0123E-10,小数最后一位丢了)。
5.nan是啥意思?
最小浮点数/2会得到一个低于正常的值,或是除以一个非常大的值,导致所有位都是0,用NaN表示,printf可以显示。
6.CMakelist中想要编译完毕输出文件到指定的目录怎么办?
在CMakeLists.txt添加install指令。但是需要make install才会执行install部分。
7.浮点型数据为啥不能直接用==比较?
因为浮点型数据分为两个部分,小数部分和指数部分,直接比较时,会产生结果错误。怎么办?让两者相减,大小就分开了。
8.结构体中有string对象为啥不能直接拷贝?
因为string的地址不一定是连续的。直接拷贝会导致拷贝的长度不对,进而产生崩溃或是数据错误。