GetLogicalDrives выводит не тот результат

Я запускаю код

#include<iostream>
#include<windows.h>
int main()
{
    std::cout << GetLogicalDrives();
}

Он мне выдаёт цифру 12, но у меня есть только диск C он должен быть 2, а 12 это получается L почему он выводит 12 и как мне вывести нужную мне цифру с диском?


Ответы (1 шт):

Автор решения: Harry

If the function succeeds, the return value is a bitmask representing the currently available disk drives. Bit position 0 (the least-significant bit) is drive A, bit position 1 is drive B, bit position 2 is drive C, and so on.

Вам перевести?

Гуглопереводчик поясняет:

Если функция завершается успешно, возвращаемое значение представляет собой битовую маску, представляющую доступные на данный момент дисководы. Битовая позиция 0 (младший бит) - это диск A, битовая позиция 1 - это диск B, битовая позиция 2 - это диск C и т.д. 12 - это биты, соответствующие буковкам C и D. DVD-дисковод стоит? Или флешка какая на букву D?

И еще - 12 - это число, но не цифра!

Запишем 12 в двоичной системе счисления - это число 00...01100, т.е. сплошные нули с единичками на третьем и четвертом местах (начиная с младшего разряда) - соответствующие 22 и 23 - 4 и 8.

Как уже пояснялось, самый младший - первый - бит указывает, есть ли диск А (нет, тут 0), второй - есть ли диск B (тоже нет, там нолик), затем третий бит - диск C (да, есть, здесь 1), потом - диск D (тоже есть - тут тоже 1), потом диск E - нет, тут нолик, потом F,G,H,... - их нет, все нули.

Значит, в вашей системе активны две буквы дисков - C и D.

Так понятно?

→ Ссылка