复习C语言

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真的好乱啊。就先这样吧,仅供我自己看。
####4.优先级的问题
算术运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑与逻辑或运算符
####5. continue、break的使用
continue下面的代码不会执行
break结束整个循环
posted @ 2022-11-11 23:32  missSherry1014  阅读(32)  评论(0编辑  收藏  举报