看代码的时候,突然有人在没有括号的情况下写了,也并不是他的代码不好,
他们都写了一种程度,基础一定不能忘记。
原始]如何记住c语言运算符的优先级?
虽然学习c语言已经有一段时间了,但是我觉得c语言运算符的优先顺序很难记住,特别是对初学者来说! 你可能会说不记得也没关系,用括号改变优先顺序就可以了。 但是大多数情况下,依赖括号容易使程序可读性变差,所以我并不反对加括号,只是提倡恰到好处。 总之,你最好记住。 阅读别人的程序也很方便。 我最近看了一下优先顺序,觉得还是可以有规律地遵循,和大家分享,希望对大家有帮助! 首先给出了c语言的运算符优先级表。
c语言运算符优先级表(从上到下,优先级依次降低) ) )。
运算符
结合性
() ) -。
从左到右
! ~ -- - (type ) * sizeof
从右到左
*/%
从左到右
_
从左到右
从左到右
==
从左到右
=!=
从左到右
从左到右
^
从左到右
|
从左到右
从左到右
||
从左到右
?
从右到左
评估
从右到左
,
从左往右第一个,() ) )-.这样理所当然的事情是最优先的,其实它们不是运算符。 除了第二个、上面的四种运算符之外,还生成了单眼运算符,即~ ---(type ) *sizeof。 请记住那些顺序。 从右到左啊。 实际上,结合I等实例很容易理解。 第三,接下来是双目算子,也是c语言算子优先级中最容易混淆的地方。 其实没那么可怕。 认真观察就知道了。 在双目运算符中,算术运算符的优先级最高,其次是移位运算符,其次是关系运算符,然后是逻辑运算符。 但是,这里需要说的是,在关系运算符中,=比=!=的优先顺序高。 另外,在逻辑运算符中,与运算的比或运算的优先顺序高,异或介于两者之间。 同样,可以将与||的优先关系进行类比。 第四,双目操作员后面是三眼操作员。 没什么好说的。 第五个,然后是赋值运算符。 可能会混淆赋值运算符和第三轮运算符的优先级。 没关系。 我想我一定写了这样的话。 (如果没有,请记住! (max=) ab )? a:b; 中选择所需的墙类型。 此语句可以轻松记住赋值运算符为什么优先级低于第三个运算符。 第六,逗号运算符是划分各个子语句的,自然优先级最低,所以我认为这很难混淆。 总之,按运算符的优先顺序从高到低排列。 对于单眼运算符-双目运算符-三眼运算符-赋值运算符-逗号运算符,特别是双目运算符,按照按运算符的优先级从高到低的顺序,按:运算符-移位运算符-关系运算符(=按优先级低(-逻辑运算符)位和- )位进行异或- )位或