首页 > 编程知识 正文

单片机应用技术c语言版答案,单片机c语言基础知识

时间:2023-05-05 09:06:26 阅读:124974 作者:2346

单片机c语言编程中常用的算子介绍

在单片机c语言编程中,通常使用30个运算符,如表1所示,其中算术运算符为13个,关系运算符为6个,逻辑运算符为3个,位运算符为7个,指针运算符为1个。 在c语言中,运算符具有优先级和结合性。 算术运算符的优先顺序首先被规定为乘除型(型运算也称为求馀运算) )

在单片机c语言编程中,通常使用30个运算符,如表1所示,其中算术运算符为13个,关系运算符为6个,逻辑运算符为3个,位运算符为7个,指针运算符为1个。

在c语言中,运算符具有优先级和结合性。

算术运算符的优先顺序被规定为先乘除型(型运算也称为求馀运算),后加减),括号是最优先的。 结合性被规定为,在从左到右,也就是运算对象两侧的运算符的优先顺序相同的情况下,首先与左侧的运算符结合。

关系运算符的优先级为、=、=4种运算符的优先级相同,=、=相同,但前四位的优先顺序高于后四位。 关系运算符的优先级低于算术运算符,赋值==高于运算符。

逻辑运算符的优先级如下:|||。

如果表达式具有不同类型的运算符,则为非(! )运算符优先级最高,算术运算符次之,关系运算符次之,其次是和||,最低的是赋值运算符。

位操作的对象只能是整数类型或字符数据类型。

表1单片机c语言中常用的运算符

运算符

范例

说明

计算

艺术

搬运

计算

a b

将变量值a和b相加

_

a-b

a变量值和b变量值的减法

*

*b

a变量值乘以b变量值

/

a/b

a变量值除以b变量值

%

a%b

a变量值除以b变量值所得的馀数

=

a=5

a变量的值,即a变量的值为5

=

a=b

a=与a b同等,将a和b相加后的结果保存在a中

-=

a-=b

a=与a-b同等,将减去a和b后的结果返回a

*=

*=b

等于a=a*b,将a和b相乘的结果返回a

//

a/=b

等于a=a/b,将a和b除以的结果返回a

%=

a%=b

a=与a=a%b同等,将除了a和b之外的馀数返回a

a

a的值加1,与a=a 1相同

--

a--

a的值减去1,与a=a-1相同

关闭

负责人

搬运

计算

ab

测试a是否大于b

a=

a=b

测试a是否在b以上

=

a=b

测试a是否在b以下

!=

答!=b

测试a是否不等于b

逻辑运算

ab

设a和b为逻辑积(AND ),在两个变量都为真的情况下结果为真

||

a|||b

将a和b设为逻辑或(OR ),如果至少有一个变量为真,则结果为真

! a

将a变量的值反过来。 也就是说,元为真则为假,元为假则为真

位元

可恶

假装的

搬运

计算

>;

a>; >; B

将a按比特向右移位b个,高位比特补充0

<; <;

a<; <; B

将a按比特向左移位b个,低位比特补充0

|

a|b

a和b按位或运算

ab

a和b以比特为单位进行运算

^

a^b

a和b按位进行异或运算

~

~a

把a的各位颠倒过来

a=b

将变量b的地址保存在a寄存器中

指针

*

*a

用于取a寄存器所指地址内的值

一级优先级左联

)括号

[]下标运算符

-指向结构成员运算符

.结构成员运算符

二级优先级右合并

! 非逻辑运算符

~以位为单位取反运算符

前缀的增量运算符

-前缀增量运算符

正符号运算符

-负运算符

类型(类型转换运算符

*

指针运算符

& 地址与运算符

sizeof 长度运算符

3级优先级 左结合

* 乘法运算符

/ 除法运算符

% 取余运算符

4级优先级 左结合

+ 加法运算符

- 减法运算符

5级优先级 左结合

<< 左移运算符

>> 右移运算符

6级优先级 左结合

、>= 关系运算符

7级优先级 左结合

== 等于运算符

!= 不等于运算符

8级优先级 左结合

& 按位与运算符

9级优先级 左结合

^ 按位异或运算符

10级优先级 左结合

| 按位或运算符

11级优先级 左结合

&& 逻辑与运算符

12级优先级 左结合

|| 逻辑或运算符

13级优先级 右结合

? : 条件运算符

14级优先级 右结合

= += -= *= /= %= &= ^= |= <<= >>= 全为赋值运算符

15级优先级 左结合

, 逗号运算符

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。

具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。

其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。

另外在C语言里 没有前置后置之分 因为++ -- 是右结合所以 右侧优先运算 表现为 "后置优先级比较高" 的假象 前置和后置的区分是因为运算符重载而后加入C++的

接下来是算术运算符,*、/、%的优先级当然比+、-高了。

移位运算符紧随其后。

其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。

所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~)

逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。

跟在其后的&&比||高。

接下来的是条件运算符,赋值运算符及逗号运算符。

在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。

&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。

在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。

赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。