short circuit c语言,警告:为操作员执行Matlab式短路操作(warning: Matlab-style short-circuit operation performed for o...

警告:为操作员执行Matlab式短路操作(warning: Matlab-style short-circuit operation performed for operator &)

码:

if (round(xw(1))>2) & (round(xw(2))>2) & (round(xw(1))

W0 = img(round(xw(1))-2:round(xw(1))+2,round(xw(2))-2:round(xw(2))+2);

else

NA=1;

break

endif

xw是包含点的坐标的列向量。 h和w是图像的尺寸。

我在OCTAVE中使用这些代码行

但是当我运行包含这些行的函数时,我会收到警告

warning: Matlab-style short-circuit operation performed for operator &

是不是使用了& , octave正在执行&&操作?

我了解到如果我使用&&然后根据第一个语句是True还是False ,将评估下一个语句。

那么,当我收到这个警告时,这是怎么回事? 那么这个问题的解决方案是什么?

我想检查所有语句是否为True而不仅仅是第一个。

Code:

if (round(xw(1))>2) & (round(xw(2))>2) & (round(xw(1))

W0 = img(round(xw(1))-2:round(xw(1))+2,round(xw(2))-2:round(xw(2))+2);

else

NA=1;

break

endif

xw is a column vector which contains the co-ordinates of a point. h and w are the dimensions of an image.

I am using these lines of codes in OCTAVE

But when I run the function which contains these lines I get a warning

warning: Matlab-style short-circuit operation performed for operator &

Is it that in spite of using &, octave is performing && operation?

I learnt that if I use && then depending on the first statement is True or False, the next statements are evaluated.

So, is this what is happening when I get this warning? What is the solution to this problem then?

I want to check if all the statements are True and not just the first one.

原文:https://stackoverflow.com/questions/45461173

2020-02-16 08:56

满意答案

您可以使用&&运算符来安全地避免警告。

警告来自于Matlab在此上下文中对&运算符进行了特殊处理 :

当你使用元素方式&和| 在if或while循环表达式的上下文中的运算符(并且仅在该上下文中),它们使用短路来计算表达式。

出于兼容性原因,Octave会检测此行为并模拟Matlab的功能。 请注意,它在Matlab中使用&&是完全安全的,因为这是隐含使用的。

You can safely avoid the warning by using && operator instead.

The warning comes from the fact that Matlab has a special handling for & operators in this context:

When you use the element-wise & and | operators in the context of an if or while loop expression (and only in that context), they use short-circuiting to evaluate expressions.

For reasons of compatibility, Octave detects this behaviour and emulates what Matlab does. Note that its completely safe to use && also in Matlab since that is what is implicitly used anyways.

2017-08-02

相关问答

如果第一条语句的结果为真,它是否基于OR语句结束评估的原则工作? 因此,如果第一条语句是真的,那么结束评估,如果它是错误的,则在OR语句的后半部分运行该函数? 它是一个if语句的有效缩写,并且你直接理解了它的工作原理。 有关JavaScript中短路评估的更多详细信息,请参阅此堆栈溢出问题 。 Does it basically work on the principle of an OR statement ending evaluation if the first statement eva...

是的,JavaScript有“短路”评估。 if (true == true || foo.foo){

// Passes, no errors because foo isn't defined.

}

现场演示 if (false && foo.foo){

// Passes, no errors because foo isn't defined.

}

现场演示 Yes, JavaScript has "short-circuit" evaluation. if (true...

我会这样说 if ((x > 0) && (bar[x] == foo))

编码风格也不错 。 它甚至可能都很好 。 我肯定更喜欢它像你描述的嵌套if结构。 顺便说一句,我会减少你使用的括号数量。 这些都是同样正确的,至少在C#和大多数其他C语言中是这样的: if (x > 0 && bar[x] == foo)

if (x > 0 && x < bar.Length && bar[x] == foo)

知道该语言的读者(你必须在某种程度上假设这一点)将能够很容易地理解上述短路表达式。 那些读...

这里短路的含义是,只要布尔结果建立,评估就会停止。 perl -E "@x=qw/a b c d/; for (qw/b w/) { say qq($_ - ), $_ ~~ @x ? q(ja) : q(nein) }"

对于输入b ,Perl不会在@x查看b后面的元素。 另一方面,您引用的文档引用的内置grep会处理整个列表,即使所需的所有内容都可能是布尔值。 perl -E "@x=qw/a b c/; for (qw/b d/) { say qq($_ - ), scalar grep ...

我认为这就是答案。 Mysql使用不同的计划,不能执行延迟评估(o“hort-circuit”)。 mysql> explain select * from avatar order by id;

+----+-------------+--------+-------+---------------+---------+---------+------+-------+-------+

| id | select_type | table | type | possible_keys | ...

短路评估意味着编译器会在能够确定整个表达式的结果时立即停止评估表达式 就你而言,当编译器发现表达式x==3为false时,它不能停止评估,因为表达式的第二部分可能为true。 所以它被迫继续评估,它发现表达式y != 5是真实的,并且整个表达式变成了FALSE || 真正 请参阅C#参考 Short circuit evaluation means that the compiler stops to evaluate the expression immediately when it coul...

这里的问题只是对实际发生的一种误解。 折叠表达式中如何进行短路评估 ? 它可用折叠表达式。 (args && ... )遵循与(a && b && c && d)完全相同的规则。 也就是说,只有在a , b和c都评估为真的情况下才会评估d。 这不是你们两种情况之间的实际差异。 false && (*pb = true); // ok at runtime.

AndL(false, (*pb = true)); // error at runtime!

虽然折叠表达式与非折叠表达式...

如果两个字段都为“null”,我只想看到错误。 然后尝试使用&& : if ((DirectoryDetailsPath == null) && (FileDetailsPath == null))

{

Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");

}

更多信息: 如果第一个条件为假,则上述解决方案将短路。 如果两个值都为空,这仍然满足仅写入输出的要求。 I only wan...

您可以使用&&运算符来安全地避免警告。 警告来自于Matlab在此上下文中对&运算符进行了特殊处理 : 当你使用元素方式&和| 在if或while循环表达式的上下文中的运算符(并且仅在该上下文中),它们使用短路来计算表达式。 出于兼容性原因,Octave会检测此行为并模拟Matlab的功能。 请注意,它在Matlab中使用&&是完全安全的,因为这是隐含使用的。 You can safely avoid the warning by using && operator instead. The wa...

你编写的代码示例都会有相同的行为。 这不是if这是短路,而只是&&表达本身的核心组成部分。 Both of the code samples you wrote will have identical behavior. It's not the if that's short circuiting but simply a core component of the && expression itself.

相关文章

中文名: MATLAB及应用 作者: 胡鹤飞 图书分类: 软件 资源格式: PDF

...

中文名: MATLAB智能算法30个案例分析 作者: 史峰 王辉 郁磊 胡斐

...

中文名: 模式识别与智能计算:MATLAB技术实现(第2版) 作者: 杨淑莹 图书分类:

...

中文名: 数字图像处理与机器视觉:Visual C++与Matlab实现 作者: 张铮 图

...

static short min(short... array)返回出现在数组的最小值

使用SolrJ操作Solr会比利用httpClient来操作Solr要简单。SolrJ是封装了http

...

添加索引 Solr添加文档至索引: http://www.cnblogs.com/dennisit/p

...

http://helephant.com/2012/07/14/javascript-function

...

集群式连接池和普通的连接池主要的区别是: 1、普通连接池使用的是 JedisPool 2、集群式

...

JAVA操作solr的实现其实很简单,但是很多细节要注意,在实际的开发中,很多人喜欢自己封装这些基础的

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值