推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

C语言运算符大全资料.pdf 9页

   2023-07-26 网络整理佚名1350
核心提示:语言的内部运算符很丰富,运算符是告诉编译程序执行特定算术或逻辑操作的符号。言有三大运算符:算术、关系与逻辑、位操作。语言中允许的算术运算符。运算符是一种好的选择。是取代汇编语言,所以它必须支持汇编语言所具有的运算能力。接下来的是条件运算符,赋值运算符及逗号运算符。指的是结构体成员运算符“.,不等指的是不等于运算符!:”(三有双重含义:即指优先级别是三,它的运算符类型也是三目,疑也取“?

.C 语言运算符包含丰富的内部运算符,这些运算符是告诉编译器执行特定算术或逻辑运算的符号。C 语言有三个主要运算符:算术、关系和逻辑以及位操作。此外,C 对于某些特殊任务还有一些特殊运算符。2.6.1 算术运算符 表 2-5 列出了 C 语言中允许的算术运算符。在 C 语言中,运算符 “+”、“-”*“、”*“ 和 ”/“ 的使用方式与大多数计算机语言相同,几乎可用于 C 中定义的所有数据类型。当“/”用于整数或字符时,结果将四舍五入。例如,在整数除法中,10/3=3。一元减法的实际效果相当于将单个操作数乘以 -1,即在任何数值将改变其符号之前放置一个减号。模运算符 “%” 在 C 语言中的使用方式与其他语言相同。请记住,模数取整数除法的余数,因此“%”不能用于浮点数和类型。最后一行打印 0 和 1,因为 1/2 可以被 0 整除,余数为 1,因此 1%2 取余数 1。2.6.2 自动递增和递减 C 语言中有两个有用的运算符,在其他计算机语言中通常找不到——自动增量和递减运算符,++ 和 -- 。运算符 “++” 是操作数加 1,而 “--” 是操作数减去 1,换句话说:x=x+1; 与++x相同;x=x-1;与 --x 相同;可以在操作数之前或之后使用自动递增和递减运算符,例如:x=x+1;可以写成++x;或 x++ ;但是,表达式中的两种用法之间存在差异。

自动递增或递减运算符在引用操作数之前执行加 1 或减 1 运算;在操作数之后,C 语言引用操作数的值,然后加 1 或减 1。考虑以下示例:x=10;y=++x;在本例中,y=11。如果程序更改为:x=10;y=x++;则 y=10。在这两种情况下,x 都设置为 11,但区别在于设置时刻,这种对自递增和自递减矩的控制非常有用。在大多数 C 编译器中,为递增和递减操作生成的程序代码比等效赋值语句生成的代码快得多,因此加 1 或减 1 运算符是尽可能不错的选择。以下是算术运算符的优先级:最高 ++ 、- -- -(一元减)* , / , % 最低 + , --编译器从左到右计算同级运算符。当然,括号会更改计算顺序。 C 处理括号的方式与几乎所有计算机语言相同:强制一个操作或一组操作的优先级上升。2.6.3 关系和逻辑运算符 关系运算符中的“关系”一词是指一个值与另一个值之间的关系,逻辑运算符中的“逻辑”一词是指关系的连接方式。由于关系运算符和逻辑运算符通常一起使用,因此将它们一起讨论。

关系运算符和逻辑运算符概念中的关键是 True 和 Flase。在 C 中,non-0 表示 True,0 表示 Flase。使用关系运算符或逻辑运算符的表达式分别为 Flise 和 Ture 返回值 0 或 1(请参阅表 2-6)。表 2-6 给出了关系和逻辑运算符,下面给出了逻辑真值表,分别为 1 和 0。关系运算符和逻辑运算符优先:顺序低于算术运算符,即像表达式 10>1+12 这样的计算可以假定为表达式 10>(1+12) 的计算,当然,表达式的结果是 Flase。表达式中允许运算组合。例如:10>5&&!(10= 10);2.6.4 位运算符 与其他语言不同,C 支持所有位运算符 ( )。因为C是为了取代汇编语言而设计的,所以它必须支持汇编语言的计算能力。位操作是对 C 标准中 char 和 int 数据类型的字节或字中的位进行测试、断言或移位处理。位操作不能用于浮点、、、void 或其他复杂类型。表 2-7 显示了位操作的运算符。位运算中 AND、OR 和 NOT(1 的补码)的真值表等效于逻辑运算,不同之处在于位运算是逐位完成的。

如表 2-8 所示,XOR 的输出为 True,当且仅当一个操作数为 True,否则为 Flase。位操作通常由设备驱动程序使用,例如调制解调器程序、磁盘文件管理程序和打印机驱动程序。这是因为位操作会屏蔽某些位,例如奇偶校验位(奇偶校验位用于确保字节中的其他位不会出错,奇偶校验位通常是字节的最高位)。通常我们可以使用位运算 AND 作为闭合位的手段,这意味着两个操作数中的任何位都是 0,并且在结果中的相应位置是 0。例如,以下函数通过调用函数 () 从调制解调器端口读取字符,并将奇偶校验位置设置为 0。字节的第 8 位是奇偶校验,通过操作字节,字节的奇偶校验位置为 0,其中位 1 到 7 为 1,位 8 为 0。表达式 ch&127 是对 ch 中每个位的相应位进行操作,数字为 127,结果是 ch 的第 8 位设置为 0。在下面的例子中,假定ch接收字符“A”并且奇偶校验位已经设置好。通常,通过对操作数进行操作,直接为结果变量的每个位分别处理位的 AND、OR 和 XOR 运算。出于这个原因(和其他原因),按位运算通常与关系运算符和逻辑运算符的使用方式不同 在条件语句中,我们可以用一个例子来说明这一点:假设 X=7,那么 x&&8 是 Ture(1),x&8 是 Flase(0)。

请记住,关系和逻辑运算符结果为 0 或 1。相应地处理类似的位运算,结果可以是任何值。换句话说,位运算可以具有 0 或 1 以外的值,逻辑运算符的计算结果始终为 0 或 1。移位运算符>>和>右移左移语句为:03。指针结构成员 。04. 结构成员!05. 逻辑非 ~ 06 .位非++ 07 .自动增量 -- 08 .递减 - 09 .取负(类型)10。类型转换 * 11。获取内容 & 12 获取地址 13。查找字节 此级别(5~13)为单目操作,均为右绑定* 14。乘 / 15 .除以 % 16.余数 + 17 加 - 18 减去 > 20。向右移动 < 21. 小于 23 . 大于: >= 24 .大于或等于 == 25 。等于 != 26 ..不等于 & 27 位和 ^ 28 位 XOR |29. 位或 &&30 与 ||31 或 ?: 32。条件运算 这个水平(32)是三目操作,右组合= 33。赋值操作 还有 10 个扩展名 +=, -=, *=, /=, %=, >>=, 左移, 从左到右右移 < = >小于、小于或等于、大于等于从左到右 == != 等于,不等于从左到右 &位向右 vs. 从左到右 ^位不同或从左到右 |按位或从左到右 && 逻辑和从左到右 || 逻辑还是从左到右?:条件从右到左 = += -= *= /= &= ^= |= 各种赋值 从右到左,逗号(顺序)从左到右 上面给出了运算符,下面给出了 32 个关键字及其含义: auto :声明通常不使用的自动变量:声明双精度变量或函数 int :声明整数变量或函数:声明结构变量或函数 break:退出当前循环 否则: 条件语句否定分支(与 if 一起): long : 声明一个长变量或函数 : 对于开关语句 案例: 语句分支 枚举: 声明枚举类型: 声明累积变量 : 别名数据类型(当然,除其他外) char : 声明字符变量或函数 : 声明变量在其他文件中声明(也可以看作是引用变量): 子例程返回语句(可以带或不带参数) 联合: 声明联合数据类型 康斯特: 声明只读变量 浮点数 : 声明浮点变量或函数 短 : 声明一个短变量或函数: 声明一个无符号类型变量或函数: 结束当前循环并开始下一个循环: 循环语句(不可描述): 生命有符号类型变量或函数无效: 声明一个没有返回值或没有参数的函数,声明一个非类型指针(基本上都是三个): 开关语句中的“其他”分支 转到: 无条件跳转语句 : 计算数据类型长度: 描述变量可以在程序执行期间隐式更改 do : 循环语句的循环体 而 : 循环语句的循环条件: 声明静态变量,如果: 条件语句 ?C 语言操作员分类 1 级优先级(左组合)()括号;[ ] 下标运算符;-> 指向结构成员运算符;。 结构成员运算符。

级别 2 优先级(右组合)! 逻辑不是运算符; ~ 按位否定运算符; ++ 前缀递增运算符; --前缀递减运算符; + 正运算符; - 负号运算符;(类型)类型转换运算符;* 指针运算符; 和地址运营商;长度运算符。3 级优先级(左组合)* 乘法运算符;/除法运营商; % 余数运算符。4级优先级(左关联)+加法运算符;- 减法运算符。级别 5 优先级(左组合)>右移运算符。级别 6 优先级(左组合) < 、 、 > = 关系运算符。7 级优先级(左组合):== 等于运算符;!= 不等于运算符。级别 8 优先级(左组合)和按位 AND 运算符。级别 9 优先级(左组合)^按位 XOR 运算符。10 级优先级(左合并) |按位 OR 运算符。级别 11 优先级(左组合)和逻辑 AND 运算符。12 个优先级级别(左合并) ||逻辑 OR 运算符。13个优先级(右组合)?:条件运算符。14 个优先级级别(右组合)= , += , -= , *= , /= , %= , &= , ^= , |= , = 赋值运算符。级别 15 优先级(左组合),逗号运算符。运算符优先级从上到下下降,最高优先级在顶部,逗号运算符的优先级最低。

在所有优先级中,只有三个从右到左组合在一起:单目、条件和分配。其他一切都是从左到右的组合。优先级最高的操作并不是真正的运算符,它们是一类特殊的操作。( ) 与函数相关,[] 与数组相关,而 -> 和 。是结构成员。第二个是单目算子,所有的单目算子都有相同的优先级,所以它们在我认为是实算子的东西中具有最高的优先级,而且由于它们都是从右到左组合的,所以毫无疑问 *p++ 和 *(p++) 是等价的。另外,在C语言中,没有介词、后置,因为++--是右组合,所以右优先级运算表现为“操作数后优先级比较高”的错觉,介词和后置的区别是因为算子重载了,再加C++后面跟着算术运算符,*,/,%当然优先级比+高, -.移位运算符紧随其后。在第二个关系运算符中,< >= 比 == != 高一级,不容易理解。所有逻辑运算符都有不同的优先级(单目运算符out,!和~)逻辑位运算符的“和”高于“或”,并且“XOR”在它们之间。它遵循 &&&比|| 高。接下来是条件运算符、赋值运算符和逗号运算符。

在 C 语言中,只有 4 个运算符指定操作方向:&&、| 、条件运算符和赋值运算符。首先计算左表达式的值,当左表达式的值可以确定整个表达式的值时,不再计算右表达式的值。例如,a = 0 &&b; 如果 && 运算符的左边位 0,则右边的表达式 b 不再被判定。在条件运算符中。 如 a?b:c;首先确定 a 的值,然后根据 a 的值计算 b 或 c 中的一个。赋值表达式规定首先计算右侧的表达式,因此 a = b = c = 6;它变得可能。运算符优先级级别提示和注释 运算符优先级层次结构提示:方括号、箭头一个句点、自增减法非负非负、针强度地址长度、乘除法、加减法、然后移位、小和大等,等等,八位数和,七位不同,六位数字或五位,四位或,三个疑问,两个赋值,一个真正有趣。其中“,”“,”是分层段。运算符优先级级别注释“括号、箭头、句点”是指级别为 15 的运算符。其中括号明确为“(),[]”,箭头指结构成员运算符“->”,句点指结构成员运算符“.” ;自动递增、自递减、非负数、针强地址长度“是指级别 14 的运算符。其中 non 指逻辑运算符 “!”,逆指按位否定运算符 “~”,负数指负号运算符 “-”,指针指指针运算符 “*”, 指强制转换运算符,地址指地址运算符 “&”,长度指长度运算符 “;”乘法、除法、加减法和移位“移位”移位是指左移运算符“>”,其中除法还包括余数运算符“%”;“次要等于、等于等”是指级别 10 到 9 的运算符:<,>= 等是指等于运算符 == ,不等于是指不等于运算符!= “八位和,七位不同,六位或”其中八位并指级别 8 的按位和运算符“&”,七位异构是指级别 7 的按位 XOR 运算符“^”, 六位 OR 是指级别 6 的按位 OR 运算符 “||”";"五和,四或“是指第 5 级和第 4 级的逻辑 AND 运算符”&&“和逻辑 OR 运算符”||“;”“三疑、二福、一个真逗号”是指从三级到一级的算子。

其中,三疑指的是条件算子“?(三有双重含义:即优先级为三,其算子类型也是三,“?”的含义也疑似),第二个赋值是指赋值算子=、+=、-=、*=、/= 、%=、>>=、0,然后执行if语句中的内容,否则退出。?条件运算符:a=(b>0)?b:-b;当 b>0 时,a=b;当 b 不大于 0 时,a=-b;其实以上的意思是把b的绝对值赋给a。逗号运算符:b=2、c=7、d=5;a=(++b,c--,d+3);..有三个表达式,用逗号分隔,所以最终值应该是最后一个表达式的值,即 d+3=8,所以 a=8

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON