Нашел недавно (в исходниках xvid'а) такое выражение:
mpeg = !!(pParam->vol_flags & XVID_VOL_MPEGQUANT);
Далее это используется как индекс в массиве из двух элементов.
То, что в скобках, имеет значения или 0 или 2^11, и путем такого преобразования превращается в 0 или 1. (все переменные здесь типа int)
Собственно, взяло сомнение, хотя это и работает, но как это будет по стандарту?
Не получится ли так, что компилятор использует не единичку в качестве отрицания нуля, а что-нибудь другое, и мы получим вылет за пределы массива?