写点什么

C 语言总结 _ 语句、运算符

作者:DS小龙哥
  • 2022 年 4 月 28 日
  • 本文字数:2489 字

    阅读完需:约 8 分钟

当前文章复盘 C 语言的: 位运算运算符、基本运算符、数据类型、变量、for 语句、while 语句、goto 语句、switch 语句、运算符优先级强制转换等。

一、变量的命名

变量的命名:   (13个字符)1. A~Z  a~z2. 0-93. _4. 说明:  只能字母和数字开头。不能使用关键字。  //左值和右值  unsigned int a=123;  //4个字节  const int b=456;  char c='A';  float d=123.456; //123.456 浮点数常量  char *p="123456"; //"123456"字符串常量
复制代码

二、常量数据格式

#include "stdio.h"
//常量声明: U和L 表示无符号长整型#define ABC 123UL#define ABC 123ul
int main(void){ //0b101010; //二进制表示形式 //0x123; //表示十六进制 //123 //表示十进制 int a=0x123; return 0;}
复制代码

三、运算符

3.1 逻辑非

#include "stdio.h"
//常量声明: U和L 表示无符号长整型#define ABC 123UL
int main(void){ int a=0; if(!a) { printf("为真!\n"); } int data=1234; printf("%d\n",!!data); //1 return 0;}
复制代码

3.2 位运算

&  :全1为1,有0为0|   :全0为0,有1为1^  :相同为0,不同为1~  :1为0,0位1>> :右移运算,低位溢出高位补0<< :左移运算符,高位溢出,低位补0
复制代码


位运算符使用较多的地方:(1) 单片机里寄存器操作


(2) 协议加密解密、压缩算法、各种算法。


(3) 当做标志位使用


#include "stdio.h"//系统里需要有8个状态位,需要存放8个状态位--------当做寄存器使用int main(void){  unsigned char a=0; //8个位  范围:0~7    //如何将a第7位,置1呢?  a|=1<<7;    //如何将a第2位,置1呢?  a|=1<<2;    //将2的第3位和第4位置1  a|=0x3<<3;    //如何判断第7位是0还是1呢?  if((a>>7)&0x1)  {    printf("第7位的值为真!\n");  }  else  {    printf("第7位的值为假!\n");  }    //bool sbit  位定义 。  //bool a; sbit LED1=P1^1;  return 0;}
复制代码

3.3 sizeof 运算符

Sizeof运算符#include "stdio.h"int main(void){  int a=1234;  printf("%d\n",sizeof(a)); //4    int b=1;  printf("%d\n",sizeof(b));  //4  return 0;}
复制代码

3.4 三目运算符

#include "stdio.h"int main(void){  /*  int a;  scanf("%d",&a);  //取地址    int a,b;  a=a&b; //与    int a,b;  a=a*b;  //乘号    int *a; //指针类型  */    int a;  a=8>5?123:456;  //if(8>5){a=123;}else{a=456;}  printf("%d\n",a); //123  return 0;}
复制代码

3.5 运算符的优先级和强制转换

#include "stdio.h"int main(void){  int a=123+456-12*5/78; //高优先级先结合,再依次....  //如果优先级同级,执行顺序是从左边到右边。  //优先级最高:()小括号    int b=123456789;  char a=(char)b; //强制转换,只是取低8位                  //欺骗编译器,告诉它,b是char类型。    char a='8';  int b=(int)a; //强制转换  printf("b=%d\n",b); //还是字符8  return 0;}
复制代码

四、语句

4.1 for 循环语句

#include "stdio.h"//系统里需要有8个状态位,需要存放8个状态位--------当做寄存器使用int main(void){  int a=123,b=456;  int cnt=0;    for(a=0;a<5;a++)  {    for(b=0;b<5;b++)    {      if(a==2)      {        break; //跳出最近的一层循环      }      cnt++;    }  }  /*  for(;;)  {    //死循环  }    while(1)  {    //死循环  }    do  {    //死循环  }while(1);  */  printf("cnt=%d\n",cnt);//20  return 0;}
复制代码

4.2 while 循环语句

while循环语句#include "stdio.h"
//系统里需要有8个状态位,需要存放8个状态位--------当做寄存器使用int main(void){ int a=0,b=0; int cnt=0; while(a<5) { while(b<5) { if(a==2)break; b++; cnt++; } b=0; a++; } printf("cnt=%d\n",cnt);//20 return 0;}
复制代码

4.3 goto 语句

在平常的逻辑代码里面,不推荐使用 goto 语句。常用的地方: 错误处理,某某程序初始化失败,就释放资源等操作。


#include "stdio.h"
//系统里需要有8个状态位,需要存放8个状态位--------当做寄存器使用int main(void){ int cnt=0;AA: //标签的定义,可以放在函数范围内的任意位置。(不能超出函数范围) printf("123\n"); if(cnt==5)goto DATA; cnt++; goto AA;
DATA: return 0;}
Goto语句常用在错误处理:#include "stdio.h"
//goto语句在错误处理里使用int main(void){ if(LED_Init()<0) //表示该函数返回值错误 { goto ERROR; } if(KEY_Init()<0) //表示该函数返回值错误 { goto ERROR; } /*....*/ /*....*/ERROR: //释放资源,结束程序 return 0;}
复制代码

4.4 Switch 语句

Switch 语句主要用在多分支选择结构----有很多种条件/情况。实际代码里,常用于菜单选择:


#include "stdio.h"int main(void){  switch(cmd) //cmd的值传入之后,与case后面的比较,成功之后再执行语句  {    case 1: //case 后面值只能是常量,而且不能重复      break; //跳出最近的一层switch语句    case 2:      {        /*......*/        break;      }    case 3:      break;    /*......*/        default: //类似于else      printf("所有的条件都不成立!\n");  }  return 0;}
复制代码


示例:


#include "stdio.h"
//投票系统,有3个待选举的人,A,B,C ,有10张票int main(void){ int i; int A=0,B=0,C=0; int data; for(i=0;i<10;i++) { printf("请投票(范围1~3):"); scanf("%d",&data); switch(data) //data的值传入之后,与case后面的比较,成功之后再执行语句 { case 1: //case 后面值只能是常量,而且不能重复 A++; break; //跳出最近的一层switch语句 case 2: B++; break; case 3: C++; break; // default: //类似于else } } printf("A=%d\n",A); printf("B=%d\n",B); printf("C=%d\n",C); return 0;}
复制代码


发布于: 2022 年 04 月 28 日阅读数: 2
用户头像

DS小龙哥

关注

之所以觉得累,是因为说的比做的多。 2022.01.06 加入

熟悉C/C++、51单片机、STM32、Linux应用开发、Linux驱动开发、音视频开发、QT开发. 目前已经完成的项目涉及音视频、物联网、智能家居、工业控制领域

评论

发布
暂无评论
C语言总结_语句、运算符_4月月更_DS小龙哥_InfoQ写作社区