精华内容
下载资源
问答
  • C语言运算符优先级口诀
    2021-05-23 09:19:18

    基本的优先级需要记住:

    指针最优,单目运算优于双目运算。如正负号。

    先乘除(模),后加减。

    先算术运算,后移位运算,最后位运算。

    请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.

    逻辑运算最后计算。

    C语言常用运算符的优先级口诀是:“单算关逻条赋逗”;

    如果加入位运算符,完整口诀是:“单算移关与,异或逻条赋”。

    ■“单”表示单目运算符:逻辑非(!),按位取反(~),自增(++),自减(--),取地址(&),取值(*);

    ■“算”表示算术运算符:乘、除和求余(*,/,%)级别高于加减(+,-);

    ■“移”表示按位左移(<>);

    ■“关”表示关系运算符:大小关系(>,>=,

    ■“与”表示按位与(&);

    ■“异”表示按位异或(^);

    ■“或”表示按位或(|);

    ■“逻”表示逻辑运算符:逻辑与(&&)级别高于逻辑或(||);

    ■“条”表示条件运算符(? :);

    ■“赋”表示赋值运算符(=,+=,-=,*=,/=,%=,>>=,<<=,&=,^=, |=,!=);

    ◆另,逗号运算符(,) 级别最低,口诀中没有表述,需另加记忆..

    优先级

    运算符

    名称或含义

    使用形式

    结合方向

    说明

    1

    后置++

    后置自增运算符

    变量名++

    左到右

    后置--

    后置自减运算符

    变量名--

    [ ]

    数组下标

    数组名[整型表达式]

    ( )

    圆括号

    (表达式)/函数名(形参表)

    .

    成员选择(对象)

    对象.成员名

    ->

    成员选择(指针)

    对象指针->成员名

    2

    -

    负号运算符

    -表达式

    右到左

    单目运算符

    (类型)

    强制类型转换

    (数据类型)表达式

    前置++

    前置自增运算符

    ++变量名

    单目运算符

    前置--

    前置自减运算符

    --变量名

    单目运算符

    *

    取值运算符

    *指针表达式

    单目运算符

    &

    取地址运算符

    &左值表达式

    单目运算符

    !

    逻辑非运算符

    !表达式

    单目运算符

    ~

    按位取反运算符

    ~表达式

    单目运算符

    sizeof

    长度运算符

    sizeof 表达式/sizeof(类型)

    3

    /

    表达式/表达式

    左到右

    双目运算符

    *

    表达式*表达式

    双目运算符

    %

    余数(取模)

    整型表达式%整型表达式

    双目运算符

    4

    +

    表达式+表达式

    左到右

    双目运算符

    -

    表达式-表达式

    双目运算符

    5

    <

    左移

    表达式<

    左到右

    双目运算符

    >>

    右移

    表达式>>表达式

    双目运算符

    6

    >

    大于

    表达式>表达式

    左到右

    双目运算符

    >=

    大于等于

    表达式>=表达式

    双目运算符

    小于

    表达式

    双目运算符

    <=

    小于等于

    表达式<=表达式

    双目运算符

    7

    ==

    等于

    表达式==表达式

    左到右

    双目运算符

    !=

    不等于

    表达式!= 表达式

    双目运算符

    8

    &

    按位与

    整型表达式&整型表达式

    左到右

    双目运算符

    9

    ^

    按位异或

    整型表达式^整型表达式

    左到右

    双目运算符

    10

    |

    按位或

    整型表达式|整型表达式

    左到右

    双目运算符

    11

    &&

    逻辑与

    表达式&&表达式

    左到右

    双目运算符

    12

    ||

    逻辑或

    表达式||表达式

    左到右

    双目运算符

    13

    ?:

    条件运算符

    表达式1? 表达式2: 表达式3

    右到左

    三目运算符

    14

    =

    赋值运算符

    变量=表达式

    右到左

    /=

    除后赋值

    变量/=表达式

    *=

    乘后赋值

    变量*=表达式

    %=

    取模后赋值

    变量%=表达式

    +=

    加后赋值

    变量+=表达式

    -=

    减后赋值

    变量-=表达式

    <<=

    左移后赋值

    变量<<=表达式

    >>=

    右移后赋值

    变量>>=表达式

    &=

    按位与后赋值

    变量&=表达式

    ^=

    按位异或后赋值

    变量^=表达式

    |=

    按位或后赋值

    变量|=表达式

    15

    ,

    逗号运算符

    表达式,表达式,…

    左到右

    从左向右顺序运算

    转换说明符:

    %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)

    %c 字符

    %d 有符号十进制整数

    %f 浮点数(包括float和doulbe)

    %e(%E) 浮点数指数输出[e-(E-)记数法]

    %g(%G) 浮点数不显无意义的零"0"

    %i 有符号十进制整数(与%d相同)

    %u 无符号十进制整数

    %o 八进制整数 e.g. 0123

    %x(%X) 十六进制整数0f(0F) e.g. 0x1234

    %p 指针

    %s 字符串

    %% "%"

    更多相关内容
  • C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的...

    C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。

    运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。

    一级运算符:标识,常量,字符串文字量,优先级提升表达式最优先执行。

    二级运算符:数组下标运算(expression)、函数调用(argument-expression-list)、成员访问(identifier、 -> identifier)、后缀自增(i++)、后缀自减(i--)、 复合初始化(initializer-list)。

    三级运算符:前缀自增(++i)、前缀自减(--i)、单目转型表式式(取地址& ,提领 * , 正号+ ,负号-、 位反~ 逻辑否!)、求类型长度(sizeof unary-expression)。

    四级运算符:强制表达式成为type-name指定的类型( type-name ) cast-expression。

    五级运算符:“ * ” 乘法运算符。

    六级运算符:“ + ”加法运算符。

    七级运算符:<< 左移运算符;>> 右移运算符。

    八级运算符:、>=关系运算符。

    九级运算符:“ == ”等于运算符;“ != ”不等于运算符。

    十级运算符:“ & ”按位与运算符。

    十一级运算符:“ ∧ ”按位异或运算符。

    十二级运算符:“ | ”按位或运算符。

    十三级运算符:“&&”逻辑与运算符。

    十四级运算符:“ || ”逻辑或运算符。

    十五级运算符:? :条件运算符。

    a72ae649f66ff323aa84ed1be8132136.png

    扩展资料

    C语言中各运算符的结合性:

    1、左结合性(自左至右):

    例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为“左结合性”。

    2、右结合性(自右至左)

    自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

    参考资料来源:百度百科——C语言运算符

    展开全文
  • 优先级

    总优先级:算术运算>关系运算>逻辑运算

    ①算术运算(加+  减-  乘*  除/   取余%)

       优先级:乘除(*/)>取余(%)>加减(+ -) ——会溢出

       科学计数法    3520=3.52 E3   (E相当于X10)

    ②关系运算(>   >=   <    <=    !=    == )——不会溢出

    ③逻辑运算 不会溢出

    1. 逻辑加:或运算,or,双目运算,符号有1为1
    2. 逻辑乘:与运算,and,双目运算,符号有0为0
    3. 取反:非运算,not,单目运算,符号 -1为0,0为1
    4. 异或:XOR,符号^,双目运算相异为1

    优先级:取反(非not)>逻辑乘(与and)>逻辑加(或or)>异或

    优先级运算符说明结合性
    1() 【】   .(成员选择(对象))     ->(成员选择(指针))从左到右
    2

             !   +(正)   -(负)   ~   ++   --   *(取值运算符)    &(取地址符)   

                            (类型)(强制类型转换)

    单目运算符从右到左
    3*(乘)    /(除)    %(取余)双目运算符从左到右
    4+(加)        -(减)从左到右
    5<<(左移)    >>(右移)    >>>从左到右
    6>(大于)     >=(大于等于)     <(小于)     <=(小于等于)从左到右
    7==(等于)        !=(不等于)从左到右
    8&(按位与)从左到右
    9^(按位异或)从左到右
    10|(按位或)从左到右
    11&&(逻辑与)从左到右
    12||(逻辑或)从左到右
    13?:(条件运算符)三目运算符从右到左
    14=(赋值运算符)    /=(除后赋值)    *=(乘后赋值)    %=(取余后赋值)    +=(加后赋值)    -=(减后赋值)    >>=(右移后赋值)    <<=(左移后赋值)    &=(按位与后赋值)    |=(按位或后赋值)    ^=(按位异或后赋值)    复合运算符从右到左
    15,(逗号运算符)从左向右顺序运算从左到右

    结合性简单理解就是从那边开始运算,从右到左的结合就是,从右边开始向左边运算,例如赋值

    结合性

    当一个运算对象两侧的运算符优先级别相同时,则按运算符的结合性来确定表达式的运算顺序。关于结合性的概念在其他高级语言中是没有的,这是C语言的特点之一。在标准C语言的文档里,对操作符的结合性并没有做出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。C语言也将34种运算符规定了不同的结合性。大多数运算符结合方向是“自左至右”,即:先左后右,也叫“左结合性”,例如 a-b + c,表达式中有-和+两种运算符,且优先级相同,按先左后右结合方向,先围绕减号结合,执行a-b的运算,再围绕加号结合,完成运算(a-b) + c。除了左结合性外,C 语言有三类运算符的结合方向是从右至左,也叫“右结合性”,即:单目运算符、条件运算符、以及赋值运算符。着重强调一点,无论是左结合性,还是右结合性,是针对两个相邻的优先级相同的运行符而言(不是表达中的运算对象),运算符是决定左右的基准点,先以前面的运算符(即位置上处于左边的运算符)构造运算,就是左结合,反之,就是右结合

    感觉有用的话就点赞收藏吧

    我是虎哥,大家互相学习多交流

    展开全文
  • 深入理解c语言运算符优先级

    千次阅读 多人点赞 2019-04-07 22:49:33
    很多刚学编程的同学对c语言运算符的优先级往往存在一些困惑,对于一些已经入门了的同学一些不太常用的运算符也较难,比如常见的函数指针: //函数指针 int (*add)(int a , int b); //返回指针的函数 int * ...

    深入了解c语言运算符优先级

    引言

    很多刚学编程的同学对c语言运算符的优先级往往存在一些困惑,对于一些已经入门了的同学一些不太常见的用法也较难理解,比如常见的函数指针:

    //函数指针
    int (*add)(int a , int b);
    //返回指针的函数
    int * getAddress(char [] , int n);
    //数组指针
    int (*a)[]
    //指针数组
    int * a[];
    

    刚刚接触这些的时候我们往往很难理解这些符号,即使我们理解了也往往对于新的符号也经常出现困惑:

    *p++;(*p)++;*++p;++*p;*p.f
    

    而彻底理解C语言运算符的优先级,能让你对这些游刃有余,避免在编程的时候出现困惑,下面我们就一起来探究一下C运算符的优先级吧!

    运算符的四要素——符号、操作数、优先级、结合性

    符号

    符号很容易理解,我们平常所见的+-*/等都是符号,运算符符号指代表某一种运算的符号。划重点:运算符一定是代表了某一种运算,例如:¥虽然也是符号就不是C语言的运算符。

    操作数(operand)

    操作数是指需要进行运算的数字或者表达式,如1+1,有两个操作数分别是1,和1;再例如 a* b + c / d 这个表达式中+号的两个操作数分别是(a* b)和(c/d)两个表达式的值,操作数不光是数字常量、字符常量也包括可以赋值的各种变量。这些操作数就像是函数的参数,根据“参数”个数的不同运算符分为一元运算符、二元运算符、三元运算符等。

    优先级

    优先级的概念很好理解,我们小学数学学的先乘除再加减就是一种优先级。给出任意一个表达式例如3+2*y[i]++;因为优先级[] = ++ > * >+ ,我们根据各项运算符优先级不难理解表达式所要表达的含义。

    结合性

    运算符想要进行运算需要有操作数,结合性顾名思义是操作符与操作数结合的亲密程度。例如前面的例子中++ 和[]拥有相同的优先级但是明显[]与y更加紧密([]距离y更近),所以我们知道是对数组中第i+1个元素进行++,而不是y进行++(这也不和语法)。C语言中运算符的结合性包括从左到右和从右到左两种。从左到右:即优先级相同计算时先算左边的后算右边的;从右到左:即运算符优先级相同先计算左边的在计算右边的。
    c语言中运算符的结合性通常都为从左到右,只有前缀一元运算符:* 、&、++(前缀)、–(前缀)、-(负号)、+(正号)、!、~(按位取反)(typename)强制转换、sizeof 、各种赋值运算符、三元运算符:? :这三类为从右到左。

    各种运算符的优先级与结合性

    下表列出了C语言中运算符的结合性和优先级,可以看出我们小括号()和{}(数组或指针初始化时使用)虽然不算是严格意义上的运算符,但()和{}中的内容通常被认为一个整体(这和数学上的括号意义一致)。所以如果实在确定不了优先级,可以使用() 例如if(a==b&&c==d||d==e&&e==f)等价于if((a==b&&c==d)||(d==e&&e==f)),添加()也使得我们的小程序可读性更高。
    除了()和{}之外优先级依次为:一元后缀运算符>一元前缀运算符>算术运算符( * / %)> 算术运算符(± )>位运算符(>>、<<)>关系运算符(>=、>、<、<=)>关系运算符(==、!=)> 位逻辑运算符(依次&、^、|)>逻辑运算符(依次&&、||)>三元运算符(?:)>赋值运算符>逗号运算符(,)。
    简单的来说,优先级顺序满足以下几项:

    • 一元后缀运算符>一元前缀运算符>二元运算符>三元运算符
    • 二元运算符中:算术运算符>关系运算符>逻辑运算符>赋值运算符
    • 逻辑运算符: && > ||

    结合性比较简单:除了一元前缀运算符、三元运算符和赋值运算符为从右到左以外,其余均为从左到右。

    运算符优先级运算符结合性备注
    0()(括号)、{}(组合文字)括号和数学运算的括号一致只是声明内部为一个整体,组合文字用了表示数组或结构直接量,严格讲这两个并不算是运算符
    1()(函数调用)、++(后缀)、- -(后缀)、[](数组下标). 、->从左到右()和[]在函数和数组声明时也适用此优先级
    2++(前缀)、- -(前缀)、*(取值)、&(取指针)、+(正号)、-(符号)、!(取反)、~(按位取反)、sizeof 、 (typename)(强制转换)、从右到左* 在指针声明时也适用此优先级
    3* 、/ 、%、从左到右算术运算符
    4+、-从左到右算术运算符
    5<<、>>从左到右位运算符-移位运算符
    6<=、<、>、>=从左到右关系运算符
    7==、!=从左到右关系运算符
    8&从左到右位逻辑运算符
    9^从左到右位逻辑运算符
    10|从左到右位逻辑运算符
    11&&从左到右逻辑运算符
    12||从左到右逻辑运算符
    13?:从右到左三元运算符
    14=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=从右到左赋值运算符
    15,(逗号运算符)从左到右逗号运算符

    补充

    关于位运算符

    位运算的优先级一直饱受争议,人们认为|、&、^应该与移位运算符(<</>>)一样,例如a&b==c我们往往期待它解析为(a&b)==c,然而事实是它被解析为a&(b==c)。这与我们期望并不相符。主要原因是历史上c并没有&&和||只有&和|,所以位运算&和|被认为是逻辑运算符。

    关于条件表达式(?:)

    通常优先级和结合性可以解决我们遇到的大部分问题。但有时候运算符本身的含义规定了另一些东西。例如a>b?c,d:e被解释为a>b?(c,d):e,因为(a>b?c),(d:e)这样会毫无意义。同样sizeof (int) *x被解释为(sizeof(int))*x,并非sizeof((int)*x),一般sizeof的操作数最好加上()表示。尽管sizeof n也是合法。
    C语言中关于条件表达式的规则为:

    logical-OR-expression ? expression : expression

    所以对于条件表达式最好按照它的意义去理解,另外条件表达式结合性是从右到左a>b ? a : c>b ? c : b这个表达式被解释为a>b ? a : (c>b ? c : b)

    对于一些运算符使用特殊情况的解释

    //函数指针
    int (*add)(int a , int b);  //括号中*add被看做一个整体,*表明add是一个指针,而int  (.)()表明指针指向的是函数类型。
    //返回指针的函数
    int * getAddress(char [] , int n);//*getAddress(*) ,*和()两个运算符同时与getAddress结合,而优先级()>*,表明getAddress是一个函数名。
    //数组指针
    int (*a)[];//括号中*a被看做一个整体,*表明a是一个指针,而int (.)[]表明指针a指向的是数组类型。
    //指针数组
    int * a[];//*a[],*和[]同时与a结合,而优先级[]>*表明a是一个数组,数组存储的内容为int类型的指针
    

    总结

    C语言中运算符优先级是C语法中很重要的一部分,Java、C++、Python、C#中运算符的优先级与C也大多相似。只要理解之后记住这些并不算难,但在实际应用中应当注意在适当的时候使用(),即使你很确定你的表达式没有必要加(),()可以保证我们的代码更加友好、可读。

    展开全文
  • C语言】符号优先级

    2021-05-22 06:37:24
    一. 问题的引出今天看阿里...}解答:如果想要答对这道题目,首先要清楚C语言中符号的优先级别,负号(-)的优先级高于^,所以2^31-3=2^28,还有一个陷阱就是C语言中认为^为异或运算而不是幂函数,所以2^28=30,然后计...
  • C运算符优先级完整口诀

    千次阅读 2019-08-12 12:27:07
    C语言常用运算符的优先级口诀是:“单算关逻条赋逗”; 如果加入位运算符,完整口诀是:“单算移关与,异或逻条赋”。 ■“单”表示单目运算符:逻辑非(!),按位取反(~),自增(++),自减(--),取地址(&),取值(*); ...
  • 1 运算符优先级 就跟加减乘除一样,在程序语言计算里面也有一个先后次序问题。只不过复杂性要比我们简单的加减乘除要复杂得多,里面不管是我们熟悉的数学运算,还是逻辑运算,比较运算。而这些运算也正是计算机可以...
  • 多个命令之间要使用分号隔开,MakefileC语言推箱子小游戏演示和说明C语言中文网提供的推箱子游戏不依赖TC环境,不依赖任何第三方库,可以在VS、CodeBlocks、DevC++等常见IDE中编译通过。 我们提供...
  • 转载 ... 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 ...
  • C语言常用运算符及优先级 需要注意以下几点: 1.如果运算量不同类型,结果返回类型顺序:char–>int–>float–>double 2.取余%只用于整型量计算。 3.乘号*不能省略。 4.强制类型转换时要按从小到大的顺序...
  • 主要介绍了C语言中的运算符优先级,文中简单总结了一些常用运算符的优先级顺序以及记忆技巧,需要的朋友可以参考下
  • 1.赋值运算符=C语言中,赋值运算符将=号右边的值,赋值给=号左边的变量中。千万不要把=号当做数学中的等于。将字面常量100赋值给整型变量a。int a;a = 100;TIPS:字面常量就是直接写在程序里面的不可变更的数据对象...
  • 文章目录基本语法案例演示使用细节课堂练习运算符优先级小结: 基本语法 条件表达式 ? 表达式 1: 表达式 2; 1) 如果条件表达式为非 0 (真),运算后的结果是表达式 1; 2)如果条件表达式为 0 (假),运算后的结果是...
  • 转自:http://blog.csdn.net/huangblog/article/details/8271791虽然在日常使用...说明:同一优先级的运算符,运算次序由结合方向所决定。简单记就是:! > 算术运算符 > 关系运算符 > && > || ...
  • 常用的运算符的一般性总结 当我们计算一个复杂的算术表达式时,其构成最多的便是算术运算符,关系运算符和逻辑运算符(&&,||)。 注意这几种运算符的结合性都是从左到右(注意逻辑非的结合性为从右到左),优先级...
  • 逗号运算符的运行方式为用逗号分隔开的这几个表达式由左至右依次按顺序执行,通常最后一个表达式的值就是整个运算的最后结果,而前面几个表达式的结果失效。需要注意的一点是,逗号运算符在C语言中是运算级别最低的...
  • 常用的位运算符有&(按位与)、|(按位或)、^(按位异或)、~(按位取反),另外还有在单片机常用的开发运算符有&&(并且)、||(或者)、~(取反)、!(非)、、>>、、>>>、 位运算把所需要运算的信息看作是二...
  • c语言运算符号的优先级本文来自百度搜索只为查看方便优先级等级口诀:圆方括号、箭头一句号, 自增自减非反负、针强地址长度,乘除,加减,再移位,小等大等、等等不等,八位与,七位异,六位或,五与,四或,三疑,...
  • mysql运算符的优先级

    2021-04-20 11:41:27
    java中运算符的优先级 所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2 得到的结果是 13 &quo ... C语言运算符和...
  • C语言知识点–顺序结构 数据表示与编码 数值数据和字符串数据 1、浮点数:计算机内部存储,用"1"表示”-“号,用"0"表示“+”号。 2、字符串:指一段连续的字符,占用主存中的连续多个字节,每个字节存放着一个字符...
  • c语言常用转义字符ascii优先级对照表 常用转义字符 转义字符 转义字符的意义 ASCII 代码 \n 回车换行 10 \t 横向跳到下一制表位置 9 \b 退格 8 \r 回车 13 \f 走纸换页 12 \\ 反斜线符“\“ 92 \ 单引号符 39 \” 双...
  • C语言编程习惯心得

    2021-05-19 16:05:15
    从编程菜鸟一路走来,慢慢对编程习惯有了一个新的认识。因为曾经我写的代码的可读性令自己也感到哭啼皆非,搞得自己...在写C语言程序的时候为了书写清晰、便于阅读、便于理解、便于维护,在编写程序时应遵循以下规...
  • C提供了所有常用的算术操作符:+ &nbsp;- &nbsp;* &nbsp;/ &nbsp;% 除了%操作符,其余几个操作符都是既适用于浮点类型又适用于整数类型。%为取模操作符,它接受两个整数操作符,把左操作数除以右...
  • C语言主要特点之一:运算符丰富(运算符的分类) (运算符的优先级) (运算符的结合性) (运算符的对象个数)
  • 转自http://www.acmerblog.com/c_operator_precedence-5581.html一共有十五个优先级:1 () [] . ->2 ! ~ -(负号) ++ – &(取变量地址)* (type)(强制类型) sizeof3 * / %4 + -5 >> <<6 > >= !=8 &9 ^
  • c语言中运算符的优先级和结合性常常被人混淆一谈,本文目的在于简单谈谈两者的区别。本文举几个简单的例子说明,这些运算符也特别常用。 首先要明白的是:优先级决定表达式中各种不同的运算符起作用的优先次序;...
  • C语言安全编码之数值中的sizeof操作符通常来说获取数组的长度时不要对指针应用sizeof操作符。现来看看下面这段代码:void clear(int array[]) {for(size_t i = 0; i < sizeof(array) / sizeof(array[0]); i++) {...
  • #include//c语言输入输出标准库 using namespace std;//所有的标准库函数在标准命名空间std中进行的定义。其中std表示标准命名空间的名字。 main()//主函数 2.编程解题的一般过程 分析问题 >设计算法 >编写...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,991
精华内容 7,996
关键字:

常用c语言优先级顺序

友情链接: otreeandbtree.rar