C++中||或运算符在代码里产生的的一些问题

这个代码是用结构体求具体日期是一年中的第几天。
下面这个代码出的结果是正确的

img


但是把里面的的if( i==1|| i==3……) 改成if( i==1||3||……)就会出现错误,比如今天2022年4月21日,实际应该是111天,结果就会变成114天

if( i==1||3||……) 等价于 if( i==1||true||……),所以无论如何,if判断都为true,所以会把二月和四月都看成是31天
|| 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。