Such an architecture and data type. Static casts like this can be a move between register and register, no-op, they can set or clear CPU flags, logically mask bytes, etc. If, for example, b is a float, then the temporary will have to be filled with what gives the mechanism for converting an integer number of CPUs with a floating point. If it is a char , then it will be two additions (possibly an extended character). If it is unsigned char , then the temporary one will contain the value b in its lowest value and zeros in more significant bytes. In fact, the only way to tell is through the generated code (in gcc this is the -S option). Floating point movement can certainly cause a pipe stop or bubble. These days you have a complication that it can even appear in the GPU.
David g
source share