例えば1900年だと「100で割り切れる」という条件を満たすため!(DY MOD 100)の値は1になりますが、それと同時に「4で割り切れる」という条件も満たすため!(DY MOD 4)の値も1になります。したがって、!(DY MOD 4)-!(DY MOD 100)の値は1-1=0でとなり、28+0=28(閏年ではない)となるわけです。
「論理値 OR 論理値」は「論理値+論理値」で代用(短縮化)というのはよく目にしますが「論理値-論理値」というのは「論理値 XOR 論理値」を代用したものと言えます。
とはいえ、内蔵時計から読み出した日付のみを使うのであればN=28+!(DY MOD 4)で1901年から2099年までカバーできるため個人的にはこれでも十分だと思います。
0そうだね プレイ済み