Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript和c++;布尔转换_Javascript_C++ - Fatal编程技术网

javascript和c++;布尔转换

javascript和c++;布尔转换,javascript,c++,Javascript,C++,语言设计师之所以这样做是有原因的吗 javascript: var a = 1 + (2 || 3); // ==> 3 c++: 逻辑OR运算符的行为在这两个方面都不同。这个序列将解释 JavaScript 1 + (2 || 3) 1 + ((2 != 0) ? 2 : 3) 1 + 2 3 C++ 1+(2 | | 3) 1+((2!=0)| |(3!=0))/在js版本中,a | | b将返回a如果a为真值(非零数字、对象、非空字符串等),否则返回b。因此2 | | 3将返回2

语言设计师之所以这样做是有原因的吗

javascript:

var a = 1 + (2 || 3); // ==> 3
c++:


逻辑OR运算符的行为在这两个方面都不同。这个序列将解释

JavaScript

1 + (2 || 3)
1 + ((2 != 0) ? 2 : 3)
1 + 2
3
C++

1+(2 | | 3)

1+((2!=0)| |(3!=0))/在js版本中,
a | | b
将返回
a
如果
a
为真值(非零数字、对象、非空字符串等),否则返回
b
。因此
2 | | 3
将返回
2
a
等于
3


< >在C++版本中,当评估<代码> a b b/COD>时,<代码> a <代码>将转换为<代码> BOOL 类型,如果<代码>(BOOL)A < /> >是代码>真< /COD>,则<代码> A < B >代码>将是<代码>真< /代码>。<代码> 2×3 的结果是<代码> Boo< <代码>值>代码>真< /代码>,当代码< >代码> > <代码> > <代码>真< /COD>将始终转换为<代码> 1 >代码>,所以<代码> 1 +真< <代码>等于< >代码> 2 < /Cord> < /p>您确信关于<代码> C++ >代码>结果吗?@ ja+C++结果是正确的。code>2 | | 3
相当于
(2!=0)|(3!=0)
(两个操作数都被解释为布尔值,如
if(2)
)。如果使用
2 | 3
,将两个操作数解释为int并导致3,则情况会有所不同……为什么会出现向下投票?我发现这是一个有趣的问题,因为我可以重现这种行为。谢谢大家!我知道结果是如何出来的,我只是想知道为什么语言设计师要这样做?它们都是高级语言。为什么在一些常见的操作员中应该有不同的行为?将C++算法移植到JS…C++时,我必须面对这个问题:“<代码>(2!=0)”(3!0)< /代码>。谢谢,指出,阿空加瓜山,纠正。@ Shreevardhan >代码,语言设计者有这个原因吗?<代码>
1 + (2 || 3)
1 + ((2 != 0) ? 2 : 3)
1 + 2
3
1 + (2 || 3)
1 + ((2 != 0) || (3 != 0))    // <-- gets reduced to boolean
1 + 1
2