c - 这个值分配是如何工作的?

标签 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/

相关文章:

c - 处理 CTRL C 时错过错误 "fatal flex scanner internal error--end of buffer"

c - 覆盖 glibc 崩溃

c - 如何更改 termios 配置,以便在用户按下 <tab> 键时 getc() 立即返回?

c - 如何构建可以接收 3 或 4 个参数的函数?

c - Swift调用C调用Swift?

在 C 中更改网络设置

程序内的 C/sys/class/pwm init

c - 将文件名或标签链接到数字索引

C main 中的最大尺寸

c - 如何在LINUX(Ubuntu)上用C实现TCP SO_KEEPALIVE