使用\u0026\u0026 ||进行短路评估操作者
发布时间:2020-12-16 10:02:37 所属栏目:百科 来源:网络整理
导读:我知道什么是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.
我知道什么是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. 但据此,应该打印1,而不是0. 我的第二个想法是: 5 || anything 由于短路评估,任何事情都没有被评估,所以这里没有优先权. 解决方法
表达式5 || 2&& x相当于5 || (2&& x)由于运算符优先级.
运行时计算表达式5 || 2&& x从左到右. 正如我们在OR中所知,如果第一个条件为真,则不会检查第二个条件. 这就是为什么x将保持为0. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |