繁体   English   中英

在 c 中评估包含逻辑和增量运算符的表达式

[英]Evaluating an expression containing logical and increment operators in c

尽管我知道 c 语言中运算符的优先级和结合性,但我真的很努力地理解这个表达式是如何在 c 中求值的

   int i=-4,j=2,k=0,m;
   m = ++i || ++j && ++k;

据我所知,预增量运算符首先从左到右评估逻辑,然后是逻辑,因此 I 值将为 -3 j 值将为 3 k 值将为 1,对于 m 值为 1但看来我错了。

我正在为即将到来的考试研究这个,非常感谢任何帮助。

在试图理解获得的最终值背后的逻辑时,您可能遗漏的部分是 C 中所谓的短路

它是什么的总结 -

如果 || 的第一个操作数运算符与 1 比较,则不计算第二个操作数。 同样,如果 && 运算符的第一个操作数与 0 进行比较,则不会计算第二个操作数。

按照上述规则,对 i ( ++i ) 的一元运算返回 1,因此||的以下操作数语句基本上被忽略。 因此,所有其他变量的值不受影响并且m接收值1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM