1. scanf的原理
#include <stdio.h>
//scanf的特点:
//scanf会卡住,是因为标准输入缓冲区是空的,他会等着你输入
int main(){
int a;
scanf("%d",&a);
printf("a=%d\n",a);//把标准缓冲区的整型数读走了
// stdin 代表标准输入缓冲区
fflush(stdin);//清空标准输入缓冲区
char c;
// scanf("%c",&c);
// printf("c=%c\n",c);//为什么这里没有卡住.因为有一个\n 实际上是由两个,写了一个,系统自带一个
//如何解决?
// 用fflush
return 0;
}
直接看上面一段代码
就比如说
有一天你遇见了这样的一段代码
int a;
scanf("%d",&a);
printf("a=%d\n",a);//把标准缓冲区的整型数读走了
char c;
// scanf("%c",&c);
// printf("c=%c\n",c);//为什么这里没有卡住.因为有一个\n 实际上是由两个,写了一个,系统自带一个
实际上上面这段代码运行的时候,是读取不到下面的float的,然后C语言又带一个\n
之前没有接触过,现在觉得还是要系统的学习
2.运算符容易犯的错误
比如下面这一段代码,判断一个数0<=x<=8.如果是的话,就输出yes,否则输出no
#incllude <stdio.h>
int main()
{
int x;
scanf("%d",&x);
if(0<=x<=8)//经典的错误。标准的零分
//上面这个属于数学上的,如果计算机读取的话是,先读取0<=x这一部分,然后如果0<=x这一部分成立的话,假设现在x=5是成立的,那么这整个表达式为真,即为1;
//然后计算机会进行第二步计算,1<=8,那就肯定为真,最后打印yes但这样是不对的,
//因为就算一开始你输入了一个9,那么第一部分的表达式也为1,那第二步仍然成立,所以谨记这样连着写不对!!!!
{
printf("yes");
}
else{
printf("no");
}
return 0;
}
####3.逻辑与 和 逻辑或 短路运算
看下面的这段代码
include <stdio.h>
int main() {
int i=0;
i&&printf("you can see me\n");//当i为假时,不会执行逻辑与后的表达式,称为短路运算。
i=1;
i||printf("you can see me too\n");
return 0;
}
//上面的代码等价于下面这段
#include <stdio.h>
int main() {
int i=0;
if(i)
printf("you can see me\n");
return 0;
}
上面格式乱了,好久没用过markdown真的好乱啊。就先这样吧,仅供我自己看。
`
标签:复习,int,scanf,C语言,see,printf,缓冲区,main
From: https://www.cnblogs.com/missSherry/p/16882448.html