首页 > 编程语言 > 详细

C语言操作符详解

时间:2021-08-04 11:06:56      阅读:24      评论:0      收藏:0      [点我收藏+]

基本要求:熟悉操作符之间的优先级并能够准确掌握每个操作符的用法与使用误区

一.基本运算符

? ? ?(1)? ? 算术运算符: +(加)、-(减)、*(乘)、/(除)、%(取余)、++(自增)、--(自减)

? ?(2)关系运算符:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、!=(不等于)、==(是否等于)、=(等于)

? ?(3)逻辑运算符:(逻辑非)、&&(逻辑与)、||(逻辑或)

? ?(4)位运算符:<<(按位左移操作符)、>>(按位右移操作符)、~(按位取反)、|(按位或)、^(按位异或)、&(按位与)

? ?(5)赋值运算符:=(将右值赋值给左值)

? ?(6)条件运算符: ?:(三目操作符)

? ?(7)逗号操作符:?

? ?(8)求字节运算符:sizeof(是以字节为单位的)

? ?(9)指针运算符:*&

? ?(10)强制类型转换运算符:((类型))

? ? (11)成员操作符:(.? ?->)

? ? ? ?(12) 下标操作符:[](数组中应用)

二.运算符详细用法如下:

(1)算术运算符(+、-、*、/、%、++、--

? ? ? ? ?+? ? ? ?-? ? :即可作为正负号运算符(单目操作符:一个操作数)也可以作为加减法运算符(双目运算符:两个操作数

? ? ? ? ?? ? ?/? ? ? ?? :其是取商(操作数均为整数,不进行四舍五入,直接去小数部分),如果操作数其中有一个是浮点数,结果就是浮点数

? ? ? ? ?? ? ?*? ? ? ?? :两个操作数直接相乘

? ? ? ? ? ? ? %? ? ? ? :其值时余数(注意:操作数(运算对象)必须为整数

? ? ? ? ? ? ? ++? ? ? :自增操作符,若果操作数在符号前面,就先应用再自增,反之,则先完成自增,再进行其他操作

? ? ? ? ?? ? ?--? ? ? ? :自减操作符,用法同上

? 代码理解如下:

?技术分享图片
(2)关系运算符(> 、 <? 、=、? >=、? <= 、 == 、 !=
? ? ?>? <? >=? <=? ==? !=? :主要用来进行条件的判断,在if....else语句和循环语句中用的较多
? ? ? ? ? ? ? ? ? ?=? ? ? ? ? ? ? ? ? :一定要和==区分开,’=‘ 常用于赋值语句中,而‘==’常用与条件判断
代码如下:
技术分享图片
? (3)逻辑运算符(!、 & & 、||
? ? ? ?在逻辑判断中,1表示真,0表示为假
? ?!A? ? ? ?:逻辑非,如果A为真,则真值为1,但是其前有逻辑非(‘ !’)符号,所以真值为0,反之,则真值为1
?A&& B? ? :逻辑与,只有当A和B同时为真时总体真值为真(1),其他情况均为假(0)
?A? | |? B? ? :逻辑或,只要当A和B同时为假时总体真值为假(0),其他情况均为真(1)
(4)位运算符(<<? 、>> 、 ~、? ^、? & 、 |
? ? ?<< >>:移位操作符,数据在计算机中是以二进制的方式(补码)进行存储,移位操作符移动的是二进制位
? ? ? ? ? ~? ?:按位取反,就是对操作数求反结果,0替换为1,1替换为0(一般取二进制位的最高位为符号位,再去取反时,符号位也要变号)
? ? ? ? ?&? ? :按位与,a & b,在相应的二进制位上,若都为1,则结果为1,否则,结果为0
? ? ? ? ?|? ? ? :按位或,a | b,在相应的二进制位上,若都是0,则结果为0,否则,结果为1
? ? ? ? ^? ? ?:按位异或,a^b,在相应的二进制位上,若相同则为0,不同则为1
实例如下:
//3? ? 在计算机中存储为 00000000 00000000 00000000 00000011
//2? ? 在计算机中存储为 00000000 00000000 00000000 00000010
//2^3 在计算机存储为? ?00000000 00000000 00000000 00000001
//? ? ? ? 所以2^3的结果为1??
代码如下:
技术分享图片
?
解释:

//可以根据箭头来判断移动方向,箭头向左为左移,箭头向右为向右移

//整型a在计算机中用二进制表示的为00000000 00000000 00000000 00000011

//整型b在计算机中用二进制表示的为00000000 00000000 00000000 00000110(a的2进制位左移1位,以后空缺用0补)

//整型c在计算机中用二进制位表示为00000000 00000000 00000000 00000000 (1100000000)(不在c的分配空间中),故其值为0

(5)赋值运算符(=

? ? ?=? ? ? :其实将等号右边的值赋值给左边,可以是一个确定的值,也可以是一个表达式

实例:

? int a;

? a=4;? ? ? ?

? a=4+5;

(6)条件运算符(?:

? ??: :类似于一种if....else 语句的缩写??
代码如下:
技术分享图片
(7)逗号表达式(
? ? ,?:用于分割多条语句
?实例如下:
? ? ? //int a=2,c=1;
(8)求字节运算符(sizeof
? ?sizeof? ?:可以用来计算数组和字符串(包括结束标志‘ \0 ’)及数据类型所占空间大小(注意:如果是计算数据类型,必须要括号
实例如下:
技术分享图片
(9)指针运算符(*&
? ? ? *? ? :有两种用法,在定义指针变量时,它是指针变量的标志,当指针变量被赋值后,变量名前加 * ,代表解引用操作
? ? ?&? ? :取地址运算符。
代码实例如下:
技术分享图片
(10)强制类型转化运算符
实际应用实例如下:
技术分享图片
(11)成员操作符(? .? ?->
? ? 主要应用于结构体
(12)下标操作符(? ?[ ]? ?
? ? ? [ ]? ? ?:在定义数组和引用数组元素时,会用到
实例如下:
技术分享图片?
三.操作符之间的运算优先级
? ?初等运算符 {(? )[? ] —> .? ?}————>单目运算符(仅有一个操作数的)————>算术运算符(先乘除后加减)————>关系运算符————>
?
? ?逻辑运算符(不包含 !)————>条件运算符(? ?: )————>赋值运算符(? ?=? ? )————>逗号运算符 (? ,
?
?沿箭头方向,优先级别逐渐降低
????????

? ? ? ? ? ? ?

?

?

?

?

?

?

?

?

?

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

? ? ?

C语言操作符详解

原文:https://blog.51cto.com/u_15314328/3260184

(0)
(0)
   
举报
评论 一句话评论(0
分享档案
最新文章
教程昨日排行
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!