哈佛大学公开课:计算机科学cs50 学习笔记(第4~5集:C语言,编译器)

1. fflush()函数

此函数包含在stdio.h头文件中,用来强制将缓冲区中的内容写入文件。
函数原型:int fflush(FILE *stream) ;
函数功能:清除一个流,即清除文件缓冲区,当文件以写方式打开时,将缓冲区内容写入文件。也就是说,对于ANSI C规定的是缓冲文件系统,函数fflush用于将缓冲区的内容输出到文件中去。
函数返回值:如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打开时也返回0值。返回EOF指出一个错误。

但是gcc下fflush函数没用。

2. sleep()函数

使调用sleep函数的[线程]睡眠(挂起)

3. 关于变量初始化

尽量在定义一个变量时就同时初始化,否则访问未初始化的值可能导致严重错误。

4. 关于精度问题

#include <stdio.h>

int 
main(int argc, char const *argv[])
{
	float a = 0.88;
	float b = 0.01;
	float c = a + b;
	// printf("%f\n", c);
	printf("%0.10f\n", c);
	return 0;
}

可以比较两个不同的prihtf语句,第一条 printf("%f\n", c); 打印结果为0.890000。第二条 printf("%0.10f\n", c); 打印结果为0.8899999857。即显示位数比较多时结果会出现小误差,因为计算机无法用有限的bit表示无限的精度。

运行下面代码:打印结果为false

#include <stdio.h>

int 
main(int argc, char const *argv[])
{
	float a = 0.88;
	float b = 0.01;
	float c = a + b;
	printf("%f\n", c);
	// printf("%0.10f\n", c);
	if (c == 0.89)
	{
		printf("true\n");
	}
	else
	{
		printf("false\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/shaozhenghan/article/details/81230153