continue;
在循环中使用,跳过该语句的下面所有代码,直接到达循环的右大括号,开始下一次循环。
do{
code
}while( );
while( ){
code
}
键盘----->缓存区----->程序(例如由scanf函数读取)
键盘输入的字符会先到达缓存区,然后程序从缓存区里取字符。
如果程序无法正确的获取缓存区的里的字符,这些字符就会一直停留在缓存区,直到有程序可以成功的获取它们。在这个期间,后续从键盘输入的字符都没法被程序获取。
举个例子:
int i = 0;
scanf("%d",&i);
printf("%d",i);
scanf("%d",&i);
printf("%d",i);
i 用于接受一个整型的值,如果这个时候从键盘输入的是一个浮点类型 4.5 这个时候,scanf会取走4,但是由于不认识 . 所以就给它放回缓存区。
第二次scanf再来取值的时候,看到的还是 . 于是它就又放回去。所以这个程序运行的时候,在第一输入4.5 之后,会连续打印两次 4 .
这个时候缓存区里还是保留着 .5\n 这几个字符。如果程序无法处理这些字符,那么后续获取字符的语句就是会执行但是没有结果。
可以通过以下语句来清空缓存区中第一个 \n 字符前的所有字符和第一个 \n 字符
scanf("%*[^\n]");
scanf("%*c");
程序(例如printf函数)----->缓存区----->显示屏
将缓存区的字符打印到显示屏上是有条件的,只有满足以下任意一条规则,就可以把字符从缓存区输出到屏幕上:
1、当缓存区的字符包含 \n 字符的时候
2、当程序结束之后
3、当缓存区充满之后
4、当程序里调用 fflush(stdout); 函数,强制输出缓存区的内容
5、scanf拥有和 fflush(stdout);类似的功能
在今天的课程里,有看到rand srand的函数,后续打算通过阅读它们的源码来了解具体的实现。