a || b
оценивается как 1, если a
не равен нулю независимо от значения b
, оценивается как 1, если a
равно 0, а b
не равно нулю, в противном случае это 0.
То есть 1 || 0
равно 1
, как и 2 || 0
.
Обратите внимание, что b
равно , а не , если значение a
не равно нулю:если бы b
была функцией, она не была бы вызвана в таком случае.Итак, в вашем примере foo(x, y++)
- это , а не , называемый , включая оценку y++
, если foo(x++, y)
не равно нулю.
Обратите внимание, что типa || b
- это int
независимо от типа аргументов.СрC ++, где типом является bool
.