var a = false || '' || 'hello'返回'hello',为什么写 C 的朋友会觉得很诡异

2017-09-21 16:38:26 +08:00
 rebeccaMyKid

一个常年写 C 做硬件开发的朋友看到这段代码后问我说为什么不是返回 1 而是'hello', 觉得很诡异很不能理解,我觉得很自然,该怎么回答她,向来不都是这样的么?

1539 次点击
所在节点    问与答
12 条回复
SuperMild
2017-09-21 16:46:43 +08:00
语言标准里||的功能写得明明白白啊
am241
2017-09-21 16:48:23 +08:00
c 里面会返回真值 1/0
nousername2030
2017-09-21 16:57:59 +08:00
没学过 c 语言吗,这个是理工科的基础课吧。
ipwx
2017-09-21 16:59:37 +08:00
我觉得你和她半斤八两。
clino
2017-09-21 17:01:00 +08:00
楼主没学过 c 吧?c 的方式就是那样啊
你要说清楚 javascript 的思维方式,不过看你说"向来不都是这样的么"感觉你也不容易说清楚.
nullcoder
2017-09-21 17:03:36 +08:00
c 没有 var 这种变量类型
yujiff
2017-09-21 17:36:05 +08:00
很明确啊!何来诡异?
oott123
2017-09-21 17:59:31 +08:00
连 php 都是返回 true。
对强类型语言而言,逻辑运算符返回布尔值十分合理啊。
geelaw
2017-09-21 18:07:32 +08:00
因为 C 语言里 || 只能返回 0/1
lightening
2017-09-21 18:10:41 +08:00
@oott123 C 是弱类型。
oott123
2017-09-21 18:16:58 +08:00
@lightening #10 抱歉,我说错了。

对于静态类型语言而言,逻辑运算符返回布尔值十分合理。事实上对于任意有类型的语言而言,这都十分合理。
lslqtz
2017-09-21 22:32:56 +08:00
'' == false;
true

'' === false;
false

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392587

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX