*(Chan ? &Step1 : &Step2) = tmp; только подозреваю в скомпилированном виде может выглядеть не очень красиво, по сравнению if (Chan) Step1 = tmp; else Step2 = tmp;
*(Chan ? &Step1 : &Step2) = tmp; только подозреваю в скомпилированном виде может выглядеть не очень красиво, по сравнению if (Chan) Step1 = tmp; else Step2 = tmp;
Да, так получается чуть больше байтов и тактов в ассемблерном листинге.