>>5
#include <stdio.h>
int main(void)
{
int m=0;
if (m == 0, m == 1) printf("%d %d\n", __LINE__, m);
if (m == 0, m == 1, m == 0) printf("%d %d\n", __LINE__, m);
if (m == 0, m == 1, m == 0, m == 1) printf("%d %d\n", __LINE__, m);
if (m == 0, m == 1, m == 0, m == 1, m == 0) printf("%d %d\n", __LINE__, m);
if (m == 0, m == 1, m == 0, m == 1, m == 0, m == 1) printf("%d %d\n", __LINE__, m);
return 0;
}

これで一番右がm==0の時だけ真と評価されているみたいなんですけど
実際はどういう動作をしているんでしょうか?