<分区>
我正在阅读 K&R,但以下代码让我感到困惑。有人可以向我解释一下吗?提前致谢。
int leap;
leap = year%4 == 0 && year%100 !=0 || year%400 == 0;
标签 c
<分区>
我正在阅读 K&R,但以下代码让我感到困惑。有人可以向我解释一下吗?提前致谢。
int leap;
leap = year%4 == 0 && year%100 !=0 || year%400 == 0;
最佳答案
leap
被分配给条件表达式的结果。
在它周围加上括号可能会使它更容易理解:
leap = ((year % 4 == 0) && (year % 100 !=0) || (year % 400 == 0));
如果这没有评估为真,您将获得 0,否则将获得 1。
例如对于 year = 2012
,您会得到以下内容:
(year % 4 == 0)
- 这是真的所以它等于 1
(year % 100 != 0)
- 这不是真的所以再次等于 1
(year % 400 == 0)
- 不为真且等于 0
然后用它们的值替换这些表达式,我们得到:
飞跃 = 1 && 1 || 0;
- 返回 1;
关于c - 这个值分配是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872489/