C语言运算符,运算符优先级(超详细运算符详解)

C语言运算符优先级(大全) .” 和 "->"多用在结构体(引用类,共用体)选择成员时使用。直接访问结构的成员时用点运算符,通过指针访问结构的成员用箭头运算符。🔺注意:当优先级相同时,按结合方向来进行计算。🔴 结合方向从左到右。🔴 结合方向从左到右。 阅读详情

        C语言中的运算符非常丰富,按照功能可分为算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、逗号运算符等。

1.算术运算符

                                                                算术运算符
运算符名称或含义操作数要求结合方向说明
+加法二元从左到右双目运算符
-减法二元从左到右双目运算符
*乘法二元从左到右双目运算符
/除法二元从左到右双目运算符
%求余(取模)二元从左到右双目运算符
++自增运算符一元从右向左单目运算符
--自减运算符一元从右向左单目运算符
+正号一元从右向左单目运算符
-负号一元从右向左单目运算符

        其中%运算符是算术运算的重点,一般运用于将某个数值控制在一定的范围。

例:将随机一个数控制在范围5以内。

// 设置随机数因子
srand(time(NULL));
// 产生随机数
int ret = rand() % 5; // 将随机数控制在0 - 4

printf("%d\n",ret);

同时,也可以利用余数判断数值的奇偶。

if(num %2 = 0)
    //偶数
else
    //奇数

        自增运算符(++)和自减运算符(--)是两个比较特殊的单目运算符,放在操作数的前置位和后置位效果不同,让我们举个例来看一下。

int a = 10;

int c = ++a;  //此时a先自加1,变成11,然后在赋值给c,c为11
int d = a++;  //此时a先赋值给d,再自加1,所以d为10,a为11
int e = --a;  //此时a先自减1,变成9,然后再赋值给e,e为9
int f = a--;  //此时a先赋值给f,再自减1,所以d为10,a为9

//注:c、d、e、f是独立书写运算的,若一起写则a的值会受到影响。

2.赋值运算符

简单赋值运算符
运算符名称或含义操作数要求结合方向说明
=给变量赋值二元(左侧必须为变量)从右向左--------
复合赋值运算符
运算符含义或名称操作数要求结合方向实例
+=

将右边的操作数加左边的操作数赋

值给左边的操作数

二元从右向左

a+=b   

结果:a=a+b

-=

将左边的操作数减右边的操作数赋

值给左边的操作数

二元从右向左

a-=b

结果:a=a-b

*=

将右边的操作数乘左边的操作数赋

值给左边的操作数

二元从右向左

a*=b

结果:a=a*b

/=

将左边的操作数除右边的操作数赋

值给左边的操作数

二元从右向左

a/=b

结果:a=a/b

%=

求两个操作数的余赋值给左边的操作数

二元从右向左

a%=b

结果:a=a%b

<<=左移且赋值运算符二元从右向左

a<<=1

结果:a=a<<1

>>=右移且赋值运算符二元从右向左

a>>1

结果:a=>>1

&=按位与且赋值运算符二元从右向左

a&=2

结果:a=a&2

^=按位异或且赋值运算符二元从右向左

a^=2

结果:a=a^2

注意:符合赋值运算符右侧的表达式是一个运算整体,不能将它们分开。例如,y*=x+1表示的是

y=y*(x+1),而不是y=y*x+1

3.关系运算符

关系运算符
运算符含义或名称结合方向操作数要求说明
==等于从左到右二元双目运算符
!=不等于从左到右二元双目运算符
>大于从左到右二元双目运算符
<小于从左到右二元双目运算符
>=大于等于从左到右二元双目运算符
<=小于等于从左到右二元双目运算符

4.逻辑运算符

逻辑运算符
运算符含义或名称结合方向操作数要求说明
&&从左到右二元双目运算符
||从左到右二元双目运算符
!从右到左一元单目运算符

        逻辑与(&&):将两个表达式串联起来,当两个表达式都为真时,结果才为真。

        逻辑或  (||):将两个表达式并联起来,当两个表达式都为假时,结果才为假。

        逻辑反(!):将逻辑真变为逻辑假,将逻辑假变为逻辑真。

注意:C语言为惰性语言,在逻辑运算与中,若左边的表达式为假,则右边的表达式将不被执行。

        在逻辑运算或中,若左边的表示为真,则右边的表达式将不被执行。

5.位运算符

位运算符
运算符含义或名称结合方向操作数要求说明
~按位取反从右到左一元单目运算符
<<左移 从左到右二元双目运算符
>>右移从左到右二元双目运算符
|按位或从左到右二元双目运算符
&按位与从左到右二元双目运算符
^按位异或从左到右二元双目运算符

        ~(按位取反):按位取反操作会翻转其每一位。运算规则:0变为1,1变为0。

       <<(左移)

        (无符号) 二进制位向左移动,左边符号位丢弃,右边补齐0。运算规律:向左移动几位,就是乘以2的几次幂。

        (有符号)将负数的原码转为补码,将补码进行左移,将左移后的补码再转为原码。

        >>(右移):

        (有符号)二进制位向右移动,使用符号位进行补位。运算规律:向右移动几位,就是除以2的几次幂(但注意这是按位运算,不完全等同于算术除法)。正数左补0,负数左补1。

        (无符号)无论符号位是0还是1,都补0。

        |(按位或):参加运算的两个对象,按二进制位进行“或”运算。运算规则:同0为0,有1为1。

        &(按位与):参加运算的两个数据,按二进制位进行“与”运算。运算规则:同1为一,其余为0。

        ^(按位异或):参与运算的两个数据,按二进制位进行“异或”运算。运算规则:相同为0,不同为1。

6.条件运算符

条件运算符
运算符含义或名称结合方向操作数要求说明
?:条件运算符从右到左三元三目运算符

具体来说,三元运算符的语法如下:

其结果必须是一个布尔值(真或假)。

  • 值1:如果条件为真,则选择这个值作为整个三元运算符的结果。
  • 值2:如果条件为假,则选择这个值作为整个三元运算符的结果。
  • 例如   exp1?exp2:exp3      如果exp1位真,则执行exp2,不执行exp3;如果exp1位假,则执行exp3,不执行exp2。 

7.逗号运算符 

逗号运算符
运算符含义或名称结合方向操作数要求说明
,逗号运算符从左想右二元或多元

------

        具体使用:表达式1,表达式2,……,表达式n

        先求表达式1的值,再求表达式2的值,依次求表达式……的值,最后再求表达式n的值。表达式n的值为整个逗号表达式的值。

8.其它运算符

(1)sizeof()运算符,单目运算,结合方向是从右至左。主要功能是计算数据类型所占的字节。使用格式为:sizeof(变量名|数据类型标识符|表达式)

(2)()运算符,结合方向是从左至右。主要功能是改变表达式中其它运算符的优先顺序。

(3)[]运算符,结合方向是从左至右。主要功能是表示数组元素下标。

(4)&运算符,取地址运算符,结合方向是从右至左。主要用于取普通变量的地址,不能用于表达式或常量。

(5)*运算符,指针运算符,结合方向是从右至左。主要功能是取指针地址所对应的存储单元的内容。

(6)(类型说明符),强制类型转换运算符,结合方向是从右至左。主要功能是将运算对象转换为括号中说明的类型。

(7)->运算符,结合方向是从左至右。主要功能是通过结构指针引用结构成员。

(8).运算符,结合方向是从左至右。主要功能是通过结构变量引用结构体成员。

9.运算符优先级别

        (此图为借鉴)

注:当运算符优先级一样时,参考结合方向。

三维重建笔记_光束平差法(Bundle Adjustment, BA) 目录 1 光束平差法(Bundle Adjustment, BA) 1.1 SFM (Structure‐from‐Motion) 定义 问题描述 1.2 重投影误差 (Reprojection Error) 目标函数 1.3 使用 Levenberg‐Marquardt Algorithm 进行优化 问题描述 简化目标函数 参考 Gauss‐Newton Method ... 阅读详情

相关推荐

c语言运算符优先级(c语言中各种运算符优先级)

运算符优先级是怎样的?c语言中各种运算符优先级 运算符优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符()和逗号运算符 c语言运算符优先级是怎样的啊 简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符。 c语...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 4万+

C语言入门系列:运算符及其优先级

将一个操作数的所有位向右移动指定位数,对于有符号整数,左侧空出的位用符号位填充(即保持符号不变),对于无符号整数,用0填充。自增运算符和自减运算符的位置对结果有影响,为了可读性,建议单独使用,不要与其他运算符在一个表达式中混合使用。)运算符用于增加或减少变量的值,分为前置和后置两种形式,影响着运算符所在表达式的值以及变量改变的时机。写代码时,最佳实践是让代码的行为符合预期,遵守行为单一原则,即表达式的行为是明确的、单一的。:如果左边的表达式为假,右边的表达式将不会被评估,因为整个表达式的结果已经确定为假。

epitomizelu的专栏 7458

基于CY7C68013A单片设计FT-TEST量产测试板硬件(原理图+PCB) protel99SE设计DDB工程文件.zip

基于CY7C68013A单片设计FT-TEST量产测试板硬件(原理图+PCB) protel99SE设计DDB工程文件,已制作样件测试验证,仅供学习设计参考。

【C语言基础】-运算符

前言 基本的算术运算符 1.算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。 2.关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。 3.逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。 4.位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位

weixin_44247448的博客 5288

【C语言】C语言运算符优先级详解

在C语言中,运算符优先级决定了表达式中各个运算符的计算顺序。了解这些优先级对于正确理解和编写复杂表达式至关重要。本文将深入探讨C语言中各种运算符优先级及其影响。

a_sen的博客 1万+

C语言——运算符优先级

目录: 一:引言 二:优先级表 实例: 记忆口诀 : 括号成员是老大; // 括号运算符 []() 成员运算符. -> 全体单目排老二; // 所有的单目运算符比如++、 --、 +()、 -() 、指针运算*、& 乘除余三,加减四; // 这个"余"是指取余运算即% 移位五,关系六; // 移位运算符:<<...

刘鑫磊 1万+

《C语言运算符100例》优先级面试错题

十年职场,三年面试(面试官视角)经验总结

英雄哪里出来 1万+

C语言运算符优先级列表(超详细)

C语言运算符优先级列表(超详细)

duiwangxiaomi的博客 1万+

C语言运算符优先级

C语言运算符优先级详细列表     运算符优先级:C语言中,运算符的运算优先级共分为15 级。1 级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。 运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先

繁小华的专栏 7万+

c语言运算符优先级(c语言运算符优先级由高到低的顺序)

C语言 符号优先级的排列顺序 分为优先级15级: 1、圆括号【()】、下标运算符【[]】、分量运算符的指向结构体成员运算符【->】、结构体成员运算符【.】; 2、逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++】【 --】、负号运算符【-】、类型转换运算符(类型)】、指针运算符和取地址运算符【*...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 1万+

C语言运算符优先级

C语言运算符包括单目运算符、双目运算符、三目运算符优先级如下: 第1优先级:各种括括号,如()、[]等、成员运算符 . ; 第2优先级:所有单目运算符,如++、–、!、~等; 第3优先级(算数运算符):乘法运算符*、除法运算符/、求余运算符%; 第4优先级(算数运算符):加法运算符+、减法运算符-; 第5优先级(移位运算符):移位运算符<<、>>; 第6优先级(条件运算符):大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=; 第7优先级

qq_37271216的博客 1万+

C语言运算符

C语言运算符 编辑 运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言的运算范围很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。主要分为三大类:算术运算符、 关系运算符与逻辑运算符、按位运算符。除此之外,还有一些用于完成特殊任务的运算符。 目录 1级别 2优先级

zhouschina的专栏 2179

C语言优先级

1、优先级图表 优先级最高者不是真正意义上的运算符,包括:数组下标,函数调用,结构体成员选择符。 单目运算符优先级次之。(! ~ ++ -- - (type) * & sizeof) 然后是双目运算符。双目运算符里, 算数运算符(* / % + -)优先级最高, 移位(>)次之, 关系运算符( >= != ==)再次之, 接着是位运算符(& ^ | ),逻辑运算符(&& ||)

bitowang 7108

C语言中的运算符(超全超详细

目录 一、算数运算符 二、关系运算符 三、逻辑运算符 四、位运算符 五、赋值运算符 六、三目运算符(特殊运算符) 七、逗号运算符 八、sizeof运算符 九、运算符优先级 一、算数运算符 基本的五种 1. + 可以是: 常量+常量 , 变量+常量 2. - 3. * 4. / 5 / 2 = 2 5. % 取余 5 % 2 = 1 其中 : 自增运算符(++) 自减...

weixin_59215611的博客 6万+

c语言学习02:运算符优先级

有关c语言优先级

m0_66123058的博客 8135

C语言优先级 运算符

1、最高级:出现同级别运算符时的结合方向是从左往右 (下面级别没写结合顺序时,默认是从左往右)。 ( ) 圆括号 [ ] 下标运算符号 -> 指向结构体成员运算符 . 结构体成员运算符 2、第二级:!、~、++、–、-、(类型)、*、&、sizeof。 这一级都是单目运算符号,这一级的结合方向是从右向左。 比如出现*p++,这时*和++同级别,先算右边,再左边。所以*p+...

qq_41923988的博客 1万+

C语言运算符优先级

1、最高级:出现同级别运算符时的结合方向是从左往右(下面级别没写结合顺序时,默认是从左往右)。 ()圆括号 []下标运算符号 ->指向结构体成员运算符 .结构体成员运算符 2、第二级:!、~、++、--、-、(类型)、*、&、sizeof。 这一级都是单目运算符号,这一级的结合方向是从右向左。 比如出现*p++,这时*和++同级别,先算右边,再左边。 所以*p++等价于*(p++),而不是(*p)++。 3、第三级:+、-、*、/、% 这一级都是算术运算符,结合顺序和数学学习中一致的,先乘..

Scholar618的博客 9929

C语言运算符优先级

一、前言    优先级:C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。     结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式 x-y+z  

Paul_roux 1万+
下一篇: const修饰指针
belAYYY
博客等级 码龄5年 35粉丝 3原创
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值