Hi All,

Request your help in understanding why the below code is producing different outputs, code 1 output: 4294966806, code 2/3 output: 50331648, and which one is the correct output.

```d
import std.stdio;

auto floatswap(T)(T[] array) @trusted @nogc pure nothrow
{
    foreach (ref item; array)
    {
        import core.bitop : bswap;
        // Code 1 output: 4294966806
        const swapped1 = bswap(*cast(uint*)&item);
        item = *cast(const(T)*)&swapped1;
        return cast(uint) item;

        // Code 2 output: 50331648
        uint tmp = cast(uint) item;
        tmp = bswap(tmp);
        uint swapped2 = cast(float) tmp;
        return swapped2;

        // Code 3 output: 50331648
        return bswap(cast(uint) item);
     }
    return assert(false, "Unsupported T: " ~ T.stringof);
}

void main () {
    float[1] floatswapBuffer = [3.14f];
    writeln(floatswap(floatswapBuffer[]));
}
```


Reply via email to