//I have a silly question :)
//I understand this line:
targetChar = (char)sourceInt;
/*that targetChar wasn't declared
and has no value in it unless we
cast the sourceInt with a (char).
But what I do not understand is
that why do we not have to do
the same for the very next line:*/
targetChar = sourceDouble;
/*Why do we not have to add a cast
(char) with the sourceDouble?
And what is the difference between */
targetChar = sourceDouble;
//and,
targetChar = (char)sourceDouble;
/*They both give us 7 anyway,
but I do not understand why.*/
It’s an implicit cast. In my opinion, these are quirks. Aim to be as explicit and predictable as possible. And especially with C and C++, just because the compiler doesn’t throw an error, doesn’t mean that certain behavior is defined (and therefore you don’t know how different compilers/architectures will treat it).
1 Like