具有无三元运算符的条件的变量定义

时间:2016-01-17 22:47:33

标签: c ansi

我只是不知道这条线的意思。:

a = b%4 == 0 && b%100 != 0 || b%400 == 0;

2 个答案:

答案 0 :(得分:2)

使用额外的括号,这个表达式更具可读性:

a = ((b % 4 == 0) && (b % 100 != 0)) || (b % 400 == 0);

这是格里高利历中闰年的测试:

b如果是4的倍数,则为闰年,除非它是100的倍数,或者是400的倍数。

例如:2016是闰年,2000也是,但1900不是,2100不是闰年。

||&&运算符是快捷逻辑运算符,分别用于OR和AND条件。表达式相当于:

if (b % 4 == 0) {
    if (b % 100 != 0) {
        a = 1;
    } else {
        a = 0;
    }
} else {
    if (b % 400 == 0) {
        a = 1;
    } else {
        a = 0;
    }
}

答案 1 :(得分:0)

如果

,则A = true
b%4 == 0
&&
b%100 !=0

OR

b%400 == 0

如果B是闰年,则A = true。 如果B不是闰年,则A = false。

我们2年前已经有了这个:)