查看原文
其他

C 语言中,x += 5 == 4 是什么意思?

脚本之家 2022-04-23

The following article is from 嵌入式Linux Author 写代码的篮球球痴

  脚本之家

你与百万开发者在一起

#讨论这个有意义吗?

这个是在知乎上看到的一个问题,评论挺多的。其中有人提到,研究这个东西有什么用?编程的时候我们不能这么写的。我记得在大学的时候,我们的副院长给我们上课,就给我们提到,要习惯并且喜欢使用 「( 」和 「)」,这两个符号。

所以上面的表达式,如果想表达清楚自己的意图,可以这样写

((x += 5) == 4)

或者是

(x += (5 == 4))

但是有些程序员为什么喜欢这样写呢?

我们可以肯定,写出这样代码的人,一定对运算符优先级背得滚瓜烂熟了。如果作为一个程序员,他认为对运算符要了如指掌,他觉得别人对这个代码肯定一眼就能看懂,他写出这样的代码也是没有问题的。

我们学这样的代码有什么用?

学习这样并不表示我们要写出这样的代码,而是,我们如果在工作学习中,遇到这样的代码,我们就一眼能看出来这个代码的作用。

C语言的标准有几百页,大部分人不会仔细研究每个细节,有些工程师觉得某些东西没有用,大概率是因为他在自己的工作中没有用到。有的程序员喜欢研究或者在工作中需要使用这样的方法,这就是这种代码存在的其中一个原因吧。

#表达式和运算符优先级

C语言在一个表达式中,如果遇到几个运算符,要考虑优先级结合方向

比如,表达式 x pri1 y pri2 z,可能出现两种可能性

  • (x pri1 y )pri2 z
  • x pri1 (y pri2 z)

如果运算符 pri1 的优先级比pri2 高,那么就是上面的第一种情况。

如果运算符 pri1 的优先级比pri2 低,那么就是上面的第二种情况。

如果优先级相同,那就要考虑结合方向。

结合方向是 「左到右」或者「右到左」。

例如,「= 」 的结合方向是 「右到左」。

所以

a = b = c  表达式的意义是 a =( b = c  )

而 「+」的结合方向是 「左到右」

所以

a + b + c  表达式的意义是 (a + b) + c

#C语言运算符优先级

#解析上面的表达式

x += 5 == 4
  • 「+=」 的优先级是14
  • 「 ==」 的优先级是 7

所以上面表达式的意义是

x += (5 == 4)

运行一下

#表达式的巧用

很多人不怎么用这种取巧的写法,我这两天看代码看到一个,截图给大家看看,非常简单,也是一种取巧的方法,挺有意思的。一般情况下,我们还是会把 x = y 写在if 外面,直接写在if里面还是挺有意思的。

如果写成下面这样的话会输出什么呢?评论给出你的答案~

#include "stdio.h"

int main(void)
{
 int x = 2
 int y = 4;
 int z = 4;
 
 if( x = y >= z){
  printf("-----------01
"
);
 }
 return (0);


- END -
点击卡片进入小程序,签到赢礼品
👇🏻👇🏻👇🏻

(更多精彩值得期待……)


更多精彩


在公众号后台对话框输入以下关键词

查看更多优质内容!


女朋友 | 大数据 | 运维 | 书单 | 算法

大数据 | JavaScript | Python | 黑客

AI | 人工智能 | 5G | 区块链

机器学习 | 数学 | 送书

●  脚本之家粉丝福利,请查看 

●  人人都欠微软一个正版? 

●  C 语言漏洞最严重,PHP 最易受攻击,程序员该怎么写代码?

● 这才是你需要的C语言、C++学习路线!

 C语言写个贪吃蛇游戏

● C语言获得“2019 年度编程语言”称号

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存