( locsemege | 2021. 04. 09., p – 10:17 )

Szerintem az az || balról jobbra megy, s ha az első nem 0, már nem értékeli ki a másodikat. Úgy tudom, ez konzekvens, például azért, hogy lehessen ilyet csinálni:

uint32_t *p;

if (p && *p) --*p;

Itt ugye, ha p == NULL, akkor már nem dereferálja, s nem nézi meg, hogy a sehova sem mutató pointer által mutatott érték nulla-e.