Re: if (x = 0 || x++)
От: hemmul США  
Дата: 22.02.05 13:11
Оценка: 27 (2)
Здравствуйте, Аноним, Вы писали:


А>Именно такой код:

А>
А>#include <stdio.h>

А>void main()
А>{
А>    int x = 0;
А>    if (x = 0 || x++) 
А>        printf("%d\n", x);

А>    printf("%d\n", x);
А>}
А>

А>что выдаст и почему?

А>


хе-хе — 0
смотрим:
if (x = 0 || x++)

если бы это воспринималось как
if ((x = 0) || x++)

то написалось бы 1 (ибо 0 || 1 есть true) (два раза)

но! из-за различного присиденса, изначальное выражение эквивалентно:
if (x = (0 || x++))

результатом (0||x++), при начальном x=0 является false (0). сразу после "выполнения" || значение x увеличивается на 1, но затем выполняется operator=() b и икс опять обнуляется. поэтому значение в if() есть false, а x=0.
Ы

vox clamantis in deserto
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.