double t = 244.233;
int a = (int) t;
is not undefined behaviour since 244 can fit inside
int did I get it right? Otherwise if it was larger value instead of 244 which didn't fit inside int this would be undefined, did I get it right?
I am more interested in how C does this. But is there difference in this case w.r.t to C++?
Best How To :
A prvalue of a floating point type can be converted to a prvalue of an integer type. The conversion truncates; that is, the fractional part is discarded. The behavior is undefined if the truncated value cannot be represented in the destination type.
So, for example, converting 66666.66 to an
int16_t would be undefined behavior, but converting
66.66 is just fine.