5

マスキング手順があります (指定されたサイズの下半分にすべて 1 のビット マスクを作成します)。

template<class T>
T bottom_half() {
    T halfway = ((sizeof(T) * 8) / 2);
    T mask = (1 << halfway) - 1;

    return mask;
}

bottom_half<int>()またはlongまたはを呼び出すと正常に動作しますchar。しかし、何らかの理由で で実行するとlong longhalfwayは正しく に設定されます32が、maskです0。なぜでしょうか?

4

3 に答える 3