c语言复习之运算符和表达式(四)

简介: c语言复习之运算符和表达式(四)


484d0babf53b46f9a9b2323d346322a0.jpg

概述

  1. 表达式书写规则:
  • 运算符不能相邻
  • 乘号不能省略
  • 可用多层括号表示运算次序,但必须成对出现
  1. 运算符分类:
  • 按所需操作数:
  • 单目
  • 双目
  • 三目–条件表达式
  • 按作用

一、算术表达式

  1. 单目运算符不会改变操作数的值
  2. 整数相除会向下取整
  3. 求模运算只针对整数,且求模运算符号只与被模数有关
  • 运算技巧:
  • 7%2——7-(7/2)*2=1
  • 5%2——5-(5/2)*2=1

二、赋值运算符、关系运算符

29f38ad7280a48d8bfb7725ba64ea650.png

三、逻辑运算符

  1. &&,||,!
  2. &&和||存在短路现象,&&只要第一个条件为假,整个都为假,不用判断后一个条件;同理||,只要第一个为真,整个都为真,不用判断后一个
  3. printf是有返回值,返回的是输出的字节数
  • 例如:

printf(" ")&&printf("ABCD")输出0

四、特殊运算符

1.++ --对变量进行加1减1

2.只能对变量使用,不能用于常量和表达式

例如:

int a[10];

*(a++);//不合法

数组名代表首地址,是常量

3. 前置时先运算,再使用,后置相反

4. 一般不要嵌套使用

五、其它运算符

  1. 逗号运算符
  • 分隔
  • 求值,逗号表达式的值总是最后一个
  1. 条件表达式
    条件?成立:不成立;
  2. &取地址
  3. sizeof判断数据类型或者表达式长度(字节)的运算符
  4. 类型转换:(目标类型)数据;

六、位运算符

  1. 按位与 & 有0则0 如2&4得0
  2. 按位或 | 有1则1 如2 | 4得6
  3. 按位异或 ^ 相同为0,不同为1 如2^4得6
  4. 按位取反 ~ 单目运算符 0变1,1变0

右移:>> 右移操作就是整体往右移动n位,左边缺得补充符号位

例如:2 >> 1 -> 0000 0010>>1 -> 0000 0001 -> 1

10 > >2 -> 0000 1010 > >2 -> 0000 0010 -> 2

左移 << 2<<1 -> 0000 0010<<1 -> 0000 0100 -> 4

七、位运算得应用

  1. 判断一个数得最低位是0还是1
    思路;用0x1按位与判断0000 0001
    如:printf(“%d",0&0x1)为0
  2. 判断一个数的最高位是0还是1
    思路;用0x80按位或判断1000 0000
  3. 取出uint32_t color 每个字节中的数据
    uint32_t color=0x123456;
    uint8_t a=(uint8_t)color;
    uint8_t b=(uint8_t)(color>>8);
    其它同理
  4. 给定两个uint8_t类型的数,分别放入uint16_t的高字节和低字节

uint8_t Hi=0x1A;

uint8_t Lo=0x28;

uint16_t ver;

ver=((uint16_t)( Hi<<8 )) | Lo;

解释:Hi<<8左移后,后八位都是0,而按位或运算又是有一则一

现在有如下几个状态

const int play=1<<0;       //1  播放状态

const int stop=1<<1;       //2  停止状态

const int pause=1<<2;      //4  暂停状态

如果一个变量保存有多种状态,并能反向识别出该变量有哪些状态,应如何处理?

注意状态的设置要保证无重复,有规律,最好是2n

int state=play | stop; //保存play,stop,3

//分别判断state里面是否有play,stop,pause,

//注意不要用if-else,状态会有多种

if(state &play) printf("play\n");  //state &play==1

if(state &stop) printf("stop\n");  //state &stop==2

if(state &pause) printf("pause\n");  //state &play==0,没找到


————————————————

版权声明:本文为CSDN博主「热爱编程的小K」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_72157449/article/details/128119820

相关文章
|
13天前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
25 4
|
3月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
2月前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
194 87
|
2月前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
196 72
|
1月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
39 3
|
1月前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。
|
2月前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
50 4
|
2月前
|
程序员 C语言
【C语言基础考研向】06运算符与表达式
本文介绍了C语言中的运算符分类、算术运算符及表达式、关系运算符与表达式以及运算符优先级等内容。首先概述了13种运算符类型,接着详细说明了算术运算符的优先级与使用规则,以及关系运算符和表达式的真假值表示,并给出了C语言运算符优先级表。最后附有课后习题帮助巩固理解。
107 10
|
2月前
|
存储 编译器 C语言
【C语言基础考研向】07逻辑运算符与赋值运算符
本文介绍了C语言中的逻辑运算符与逻辑表达式、赋值运算符以及求字节运算符`sizeof`。逻辑运算符包括`!`(逻辑非)、`&&`(逻辑与)和`||`(逻辑或),其优先级规则与数学运算符类似。通过示例展示了如何用这些运算符判断闰年及逻辑非的运算方向。此外,文章还解释了左值与右值的概念及其在赋值运算中的应用,并介绍了复合赋值运算符的使用方法,如加后赋值`+=`和乘后赋值`*=`。最后,通过`sizeof`运算符示例展示了如何获取变量的字节大小。
|
2月前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。