Задачи по языку С

       

Операция условия, если не считать,


вначале x=3, y=2, z=1 x < y ? y : x
(x<y)?(y):(x) Операция условия, если не считать, что она использует три операнда, разбирается подобно любой другой операции.
((x<y)?(y):(x))
(FALSE?(y):(x)) Вначале вычисляется условие. Затем выполняется или часть операции, соответствующая истинному значению условия, или часть, соответствующая ложному значению условия, но не обе вместе.
(x) В этой задаче значение условия - ЛОЖЬ, поэтому значением всего выражения будет значение выражения, соответствующего ложному значению условия.
(3) 3




вначале x=3, y=2, z=1 x < y ? x++:y++ ((x<y)?(x++):(y++))
(FALSE?(x++):(y++)) Вначале вычисляем условие.
((y++)) Значение условия - ЛОЖЬ, поэтому должна вычисляться часть, соответствующая ложному значению условия.
(2), и x=3
2 (Так как операция x++ не выполнялась, то значение x остается равным 3.)


вначале x=3, y=3, z=1 z += x < y ? x++ : y++ (z+=((x<y)?(x++):(y++))) (z+=(FALSE?(x++):(y++)))
(z+=(y++)) Результат условного выражения - это результат присваивания.
(z+=(3)), и y=4 (z=z+3) (z=4) 4


вначале x=3, y=4, z=4 ( z >= y >= x ) ? 1 : 0 (((z>=y)>=x)?(1):(0))
((TRUE>=x)?(1):(0)) Условие начинает вычисляться изнутри.
((1>=x)?(1):(0)) Значение самого внутреннего условия - ИСТИНА. Оно сравнивается со значением целого x. Хотя это и законно в языке С, и со значением ИСТИНА обходятся вольно, считая его целым числом, в данном случае это 1. Однако часто, как и в этой задаче, это не приносит желаемых результатов. (Следующая задача показывает правильный способ для сравнения трех величин.)
(FALSE?(1):(0)) ((0)) 0


вначале x=3, y=4, z=4 z >= y && y >=x ((z>=y)&&(y>=x))
(TRUE&&(y>=x)) Вычисляем выражение слева направо.
(TRUE&&TRUE) (TRUE) 1

Содержание раздела