C 无三元算子条件下的变量定义

C 无三元算子条件下的变量定义,c,ansi,C,Ansi,我只是不知道这句话是什么意思 a = b%4 == 0 && b%100 != 0 || b%400 == 0; A=如果 b%4 == 0 && b%100 !=0 OR b%400 == 0 A=如果B是闰年,则为真。 A=如果B不是闰年,则为假 我们两年前就有过这样的情况:)这个表达式加上括号后可读性更强: a = ((b % 4 == 0) && (b % 100 != 0)) || (b % 400 == 0); 这是对公历闰年

我只是不知道这句话是什么意思

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

b%4 == 0
&&
b%100 !=0

OR

b%400 == 0
A=如果B是闰年,则为真。 A=如果B不是闰年,则为假


我们两年前就有过这样的情况:)

这个表达式加上括号后可读性更强:

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;
    }
}

如果b是一个年份,a是
true
如果b是闰年,你应该给K&R一个更好的解读。这意味着作者太无能,懒得添加足够的括号,以使表达式清晰易读,易于调试。如果我使用关系运算符,a只能是1/0?e、 g.“a=2*4==x”如果x==8,a将为1?是的,a只能为False\True 0\1a=2*4==x如果(x==8)将为True,如果(x!=8)将为False;