使用\u0026\u0026 ||进行短路评估 *** 作者

使用\u0026\u0026 ||进行短路评估 *** 作者,第1张

概述我知道什么是C中的短路评估. a&& b(如果a = 0,则不检查 *** 作数b) a || b(如果a =非零,则不检查 *** 作数b) 但我坚持这个问题 int x = 0;if (5 || 2 && ++x) printf("%d", x); 这输出0. 我的第一个想法如下: 根据优先级表,优先级是&&,|| (降序排列) > x:evaluated.x成为1. > 2&& x评估.两个 *** 作数 我知道什么是C中的短路评估.

a&& b(如果a = 0,则不检查 *** 作数b)

a || b(如果a =非零,则不检查 *** 作数b)

但我坚持这个问题

int x = 0;if (5 || 2 && ++x)    printf("%d",x);

这输出0.

我的第一个想法如下:

根据优先级表,优先级是&&,|| (降序排列)

> x:evaluated.x成为1.
> 2&& x评估.两个 *** 作数都被评估.
> ||被评估.

但据此,应该打印1,而不是0.

我的第二个想法是:

5 || anything

由于短路评估,任何事情都没有被评估,所以这里没有优先权.

解决方法 表达式5 || 2&& x相当于5 || (2&& x)由于运算符优先级.

运行时计算表达式5 || 2&& x从左到右.

正如我们在OR中所知,如果第一个条件为真,则不会检查第二个条件.
所以这里5被评估为真,因此(2&& x)将不会被执行.

这就是为什么x将保持为0.

总结

以上是内存溢出为你收集整理的使用\u0026\u0026 ||进行短路评估 *** 作者全部内容,希望文章能够帮你解决使用\u0026\u0026 ||进行短路评估 *** 作者所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1217255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存