OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 【转】C 语言中,x += 5 == 4 是什么意思?

共6条 1/1 1 跳转至

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

菜鸟
2020-05-19 10:17:55    评分

#讨论这个有意义吗?

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

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

((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\n");
 }
 return (0);
}

版权声明:本文为CSDN博主「写代码的篮球球痴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weiqifa0/java/article/details/105462999




关键词: C语言     运算符    

助工
2020-05-19 17:21:36    评分
2楼

模糊两可、不清晰的写法,建议不那样写!


工程师
2020-05-19 17:26:49    评分
3楼

x 先加5 在跟4判断是否一样? 还是反过来?


助工
2020-05-19 17:30:57    评分
4楼

炫耀技能吗?

但我也不喜欢这样的写法!



专家
2020-05-21 09:11:09    评分
5楼

程序确实需要简单明确。但还这种一般出现在考试和招聘中。


工程师
2020-05-21 22:53:06    评分
6楼

学到了


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]