一段骚代码 我没大意啊 翻车了

群友发的代码

https://cdn.learnku.com/uploads/images/202012/16/25979/3xN0bIjwjS.png!large

正确答案是

x = 2 
y = 1 
z = 1 
t = 1

优先级: (你们肯定不想百度了 我发出来吧)

优先级排名 运算符 结合方向
1 ++ (前置) 右到左
11 && 左到右
12 || 左到右

第一次理解

https://cdn.learnku.com/uploads/images/202012/16/25979/5pjtRLyFMM.png!large

t = ++x || ++y && ++z  
t = 2 || 2 && 2 
// 第一步 x = 2; y = 2; z =2;
// 第二步: 2 || 2 = 1
// 第三步: 1 && 2 = 1
// 第四步: t = 1
x = 2
y = 2
z = 2
t = 1
// 没毛病吧 哈哈。

第二次

https://cdn.learnku.com/uploads/images/202012/16/25979/q2drCyTXdc.png!large

(这是正确的)

严格的说: 先执行 ++ 再执行 && 和 || 才对啊,优先级让我懵逼。

问老师

https://cdn.learnku.com/uploads/images/202012/16/25979/vjXmpAyy4a.png!large

https://cdn.learnku.com/uploads/images/202012/16/25979/wDAYTOP8Zm.png!large

得到了满意的答案。
公式其实变成了:
t = (++x) || (++y && ++z)

先分界了,再按优先级执行的。

面试题 +1 (祈祷面试官不是什么魔鬼)

专心学习不瞎搞
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 14
Epona

讲道理,工作中这么写的,全都打死

3年前 评论
Epona

讲道理,工作中这么写的,全都打死

3年前 评论

我学废了 :joy:

讲真,如果是我之前遇到这样的面试,我就转身离开回去后我还会反思自己为什么会遇到这样的面试。
现在嘛,只要工资够高,你问我茴香豆有几种写法都行。

最近看到了一个关于程序员相关的一个国际比赛IOCCC(国际C语言混乱代码大赛),不得不说语法我都懂,但一行我都看不懂。这个题目和那些题都挺有意思的。

3年前 评论

很多人都在想为什么要搞这种无聊的脑筋急转弯,算法题可以理解,考各种语法混到一起之后的运行结果,感觉真的是。一两道无所谓,面试遇到满卷子这种的转身就撤了,面试题考这种的公司也不会好到哪里去。纯属吐槽,这种题自己闲来做还是挺有意思的。

3年前 评论

多加几个括号的事,多写几行代码,少死几个脑细胞。 还有我只用:i+=1,i-=1;谁要是问我i++与++i的区别,我都不理他

3年前 评论
porygonCN 3年前

唉?我竟然做对了。貌似在学校考试时有过类似的题,当时还挺反感的。

3年前 评论
sreio

t 应该等于 true 吧, || 的结果 应该只有 truefalse

3年前 评论
porygonCN 3年前
sreio (作者) 3年前
codemonkey

嗯,|| 前面 true 了后面的不执行,是这样的

3年前 评论

这和钓鱼执法是一样的。。。程序员这样写不被喷死

3年前 评论

&& 和 and 优先级都不一样

3年前 评论

前年做面试题经常遇到这个问题,当时也是这个问题,其实就运算符优先级;
||条件为真时不下面的逻辑不会走,先加加会返回,后加加不会返回;
可以试下

t=x--||++y||++z;
t=x--&&y--&z--;
3年前 评论

@Epona 哈哈,还是要遵循 KISS 原则嘛

3年前 评论

想加群。。。 :joy:

3年前 评论

@L学习不停 codewar 上面也都是写这种代码的人才

3年前 评论
L学习不停 3年前
MArtian (作者) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!