0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

DS小龙哥-嵌入式威廉希尔官方网站 来源:DS小龙哥-嵌入式威廉希尔官方网站 作者:DS小龙哥-嵌入式技 2022-08-14 09:39 次阅读

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

一、变量的命名

变量的命名:   (13个字符)
1. A~Z  a~z
2. 0-9
3. _
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;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136708
  • 运算符
    +关注

    关注

    0

    文章

    172

    浏览量

    11081
收藏 人收藏

    评论

    相关推荐

    C语言基础知识(4)--运算符

    C语言中,运算符包括有算术运算符、关系运算符、逻辑运算符和位
    的头像 发表于 06-15 09:38 3641次阅读

    C语言运算符的使用方法

    详细介绍了C语言表达式、算术运算符、赋值运算符、关系运算符、条件结构、逻辑运算符、位
    发表于 11-02 11:30 1606次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>运算符</b>的使用方法

    C语言运算符的优先级和结合性

    执行左边的叫左结合性。 表达式(Expression)和语句(Statement)的概念在C语言中并没有明确的定义: 表达式可以看做一个计算的公式,往往由数据、变量、运算符等组成,例如
    发表于 07-06 06:46

    C语言程序设计--运算符与表达式

    c语言对数据有很强的表达能力,具有十分丰富的运算符,利用这些运算符可以组成各种表达式及语句运算符
    发表于 07-14 21:30 46次下载

    C语言入门教程-运算符优先级

    运算符优先级C语言有丰富的运算符。如果不清楚这些运算符的优先级,则在同时使用多个运算符时就容易产
    发表于 07-29 14:21 1305次阅读

    单片机C语言教程-运算符和表达式

    单片机C语言教程-运算符和表达式   单片机C语言教程-运算符和表达式  
    发表于 03-27 17:13 2219次阅读

    C语言32个关键字九种控制语句34种运算符

    C语言32个关键字九种控制语句34种运算符 C语言32个关键字九种控制
    发表于 05-06 11:47 6次下载

    C语言运算符的使用

    C语言运算符的使用,感兴趣的小伙伴们可以瞧一瞧。
    发表于 08-23 17:56 0次下载

    单片机C语言编程常用的运算符介绍

    新手适用的C语言运算符总结
    发表于 01-01 21:52 4次下载

    C运算符的优先级和结合性详细解决

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。 C语言内置了丰富的运算符,大体可分为10类:算术运算符、关系
    的头像 发表于 02-22 17:27 3234次阅读

    c语言运算符及例题

    C语言中逻辑运算符包含逻辑与&&、逻辑或||、逻辑非!三种。其中逻辑与&&是双目运算符,即需要运算符两边都要有表达式,且两边表达式都为真,此
    发表于 02-16 16:14 0次下载

    C语言运算符

    C语言中,我们常常会用到表达式,在使用表达式的过程中便会使用到运算符C语言中,不同的运算符
    的头像 发表于 02-21 15:12 1188次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>的<b class='flag-5'>运算符</b>

    C语言中什么是关系运算符

    C语言中,比较称为关系运算符,所谓关系运算就是比较运算,将两个数值进行比较,判断其比较的结果
    的头像 发表于 03-09 10:47 2426次阅读

    C语言中算法运算符的基本使用方法

    C语言的算数运算符,是用来完成基本的算术运算的符号。
    发表于 08-21 14:42 628次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>中算法<b class='flag-5'>运算符</b>的基本使用方法

    c语言从右到左的运算符有哪些

    以下是一些主要的从右到左运算C语言运算符: 函数调用运算符 ( () ):当您调用一个函数时,参数列表是从右到左进行求值的。 后置递增
    的头像 发表于 08-20 11:39 912次阅读