假设,如果我使用这样的三元运算符:a ? b : c ? d : e
代码:
#include <stdio.h>
int main()
{
int a=1,b=2,c=3,d=4,e=5;
printf("%d\n", a ? b : c ? d : e);
return 0;
}
Gcc和Clang给出了一个输出2。
问题:
是否保证将其解析为(a ? b : (c ? d : e))?或
这是否未具体说明的行为?
C标准是怎么说的?
从中,我了解到按位AND的运算符优先级高于逻辑OR。然而,下面的程序给出了意外的输出。
#include<iostream>
using namespace std;
int main()
{
int a = 1;
int b = 2;
int c = 4;
if ( a++ || b++ & c++)
{
cout <<a <<" " << b <<" " << c <<" " <<endl;
}
return 0;
}
输出为
我已经在网上搜索过了,但是我没有找到这个问题的解决方案。
运算符NAND、NOR和XNOR的逻辑优先级是多少
我的意思是,举个例子
A AND B NAND C
应该首先评估哪个运算符?
显然,NAND可以翻译为NOT-AND (因为NOR是NOT-OR,XNOR是NOT-XOR),但是
(A AND B) NAND C != A AND (B NAND C) = A AND NOT(B AND C)
根据我的研究,对于这样的表达式没有定义的优先级,所以我认为最简单的解决方案是根据运算符在表达式中出现的顺序来评估它们,但我可能错了。
有什么建议吗?
我目前正在学习布尔数据类型,我想知道if-else语句中的条件是否完成.
#include <stdio.h>
#include <stdbool.h>
int main() {
bool a = false, b = false, c = false , d = false;
if ((a&&b)||(!c&&d)) {
if(((a||!b)&&c)||(b&&!a)) {
printf("1");
} else i
我试图弄清楚如何更新以下Google电子表格查询函数,以便它可以搜索列"J“中的三个或更多单独的值。如果列"J“中有任何值,则需要查询以返回B、C、D列中的'select‘数据。
=query(data!B2:BK,"select B, C, D, E, F, G, H, I, J, K, L, M, N, BA where J = 'Guest Speaker'",false)
因此,如果"J“等于Guest Speaker、Field Trip或Anything,它将从B、C、D等返回数据。
所以我查看了一些A级计算机科学过去的论文,并无意中发现:
现在,我的第一个反应是,第6行不需要括号,原因是代数运算符优先于比较,后者优先于布尔运算。
作为Java的一个小例子:
int a = 100;
int b = 100;
int c = 100;
int d = 100;
if( ((c+d) > 180) && ((a+b+c+d)) >= 320)
System.out.println("greater");
一直以来,我对短路评估的想法似乎都是错误的。
在javascript中:
var a = false, b = true, c=true;
a && b || c; // Evaluates to true
与
var a = false, b = true, c=true;
a && (b || c); // Evaluates to true
当VM看到a为false时,为什么不停止?
更明确的例子:
function a(){
console.log("I'm A");
return false;
}
function b(
鉴于典型的编码口头语是“不要在方法调用中引入副作用”。不使用短路运算符的唯一原因(据我所知--如果我错了,请告诉我)是因为你在后续代码中依赖于方法调用的副作用。为什么像C#和VB.NET这样的语言中的默认操作符不是一个短路版本?
即:
if (Method1() & Method2()) {
}
if Method1 And Method2 then
End if
if (Method1() | Method2()) {
}
if Method1 Or Method2 then
End if
实际上(默认情况下)意味着
if (Method1() &&a
我试图从一列中查询几种不同的颜色。到目前为止,这就是我所拥有的:
=query('Raw Data'!C1:J1000,
"Select E, D, I, J, C, F, H
where H contains 'Monday'
and F='Green'
and C='schools'
order by E")
例如,我想查询F列中的所有项目,即绿色、红色和蓝色。是否有一种方法来查询1列中的多个选择?
在Ruby中,找到如下代码是合理的:
a = 1 and b = 2 and c = 3
print "a = #{a}, b = #{b}, c = #{c}\n"
获取结果:
a = 1, b = 2, c = 3
但是我不能理解为什么这样的代码:
a = 1 && b = 2 && c = 3
print "a = #{a}, b = #{b}, c = #{c}\n"
结果是:
a = 3, b = 3, c = 3
有人能帮我澄清一下吗?
传统上,大多数编程语言的AND优先级高于OR优先级,因此表达式"a OR b AND c“被视为"a OR (b AND c)”。遵循这个想法,搜索引擎和查询/寻址语言(css,xpath,sql,...)使用了相同的优先顺序。是不是搞错了?
当处理足够大的数据时,这种优先级排序是不方便的,因为它使得在不使用括号的情况下无法创建可重用的查询上下文。使用AND创建上下文更加方便,然后使用OR在上下文中合并结果。如果使用空格作为AND运算符,使用逗号作为OR运算符,则会更加方便。
例如:在互联网上搜索11月或12月去巴哈马的机票时,键入“机票巴哈马11月,12月”而不是“机票巴哈马
我正试着在一个很小的电话里做一点数学。我有两个列要添加它们的值,然后检查它们是否小于我输入的值。
c = self.db.cursor()
c.execute("BEGIN EXCLUSIVE TRANSACTION");
c.execute("SELECT ID as id,task FROM tube WHERE state=0 OR (state=1 & ts+ttr<? ) ORDER BY ID ASC LIMIT 1", (time.time(),))
task = c.fetchone()
pr
因此,我将介绍C编程中的一些内容,我之前已经讲过了。
然而,我很难回忆起几件再次变得相关的事情。我开始编写更复杂的程序,它们使用越来越多的条件语句,但我无法完全正确地理解它们。
综上所述,我知道在C中逻辑运算符以两种方式之一确定条件的值,true或false。实际上等于1或0。
以以下表达式为例:(如果x为4,y为5,则为z is 3)
x > z && y > z
插入值..。
4 > 3 && 5 > 3
所以在布尔逻辑方面..。我知道这个语句的值实际上是:1 && 1,它是1(真)
或者..。(与上面声明的变量值相同