Because in C language, numbers with different data types will be automatically converted into high types (the so-called high types can be understood as types that occupy more bytes). However, if the types are the same, they will not be automatically converted during the operation, so 5/9 should be equal to 0.5XX, but since 5 and 9 are integers, their operation results are also integers, and they become 0!
In your expression, if at least one of y or z is floating point, that's fine, otherwise at least one of 5 or 9 will become floating point 5.0 or 9.0.