3 ms·
Off-topic, For this kind of pointer casting, shouldn't you be using a union? I believe this is undefined behaviour, as written.
by Lvl999Noob 1y ago
Off-topic, For this kind of pointer casting, shouldn't you be using a union? I believe this is undefined behaviour, as written.
- eska 1y agoYes, it violates the standard, although in practice it should work because the alignment is the same.
- Someone 1y agoAs written, it is UB, yes, but certainly in C++, and, I think, also in C, using a union is undefined behavior, too. I think (assuming isn’t and float to be of the same size) the main risk is that, if you do union { float f; int i; } foo; foo.f = 3.14; printf(“%x”, foo.i); that the compiler can think the assignment to foo.f isn’t used anywhere, and thus can chose not to do it. In C++, you have to use memmove (compilers can and often do recognize that idiom)