您的位置:首页 > 其它

C的一些知识【持续更新】

2013-03-28 22:58 162 查看
1、要显示八进制、十六进制前缀,使用%#o、%#x、%#X,分别显示o、0x、0X前缀。

2、C语言程序要特别注意数据类型的实际字节数,在某些系统中,char不一定是8位,int不一定是32位等等。C99提供了inttype.h头文件,可以提供确切的字节数数据类型,例如uint32_t表示32位无符号整数类型。注意,要使用inttype.h,环境必须支持C99。

3、C语言中浮点数精度问题:float型数据精度为至少6位有效数字,是指想12.3456789这样的数据至少前6位是有效的,即能正确表示12.3456,而后面的数据就不一定正确了。验证程序如下:

/**
*功能:验证浮点数精度,以float类型举例
*作者:赵聪
*时间:2013-3-29
*/
#include <stdio.h>

/**
*主程序
*/
int main(void){
/**
*测试数据
*/
float f_test1 = 0.123456789;
float f_test2 = 1.23456789;
float f_test3 = 12.3456789;
float f_test4 = 123.456789;
float f_test5 = 1234.56789;
float f_test6 = 12345.6789;
float f_test7 = 123456.789;
float f_test8 = 1234567.89;
float f_test9 = 12345678.9;
float f_test10 = 123456789;

/**
*打印
*/
printf("%.10f\n",f_test1);
printf("%.10f\n",f_test2);
printf("%.10f\n",f_test3);
printf("%.10f\n",f_test4);
printf("%.10f\n",f_test5);
printf("%.10f\n",f_test6);
printf("%.10f\n",f_test7);
printf("%.10f\n",f_test8);
printf("%.10f\n",f_test9);
printf("%.10f\n",f_test10);

return 0;
}

结果如下图:



从第三个数据可以看出在第八位数时,数据不再正确。从所有数据可以看出,在我的环境中,浮点型数据(float型)从第八位不再保证正确。

4、sizeof后跟数据类型时,必须加上括号,而跟变量时,则不需要加括号。举例,sizeof(int),int a; sizeof a。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: