GetLogicalDrives выводит не тот результат
Я запускаю код
#include<iostream>
#include<windows.h>
int main()
{
std::cout << GetLogicalDrives();
}
Он мне выдаёт цифру 12, но у меня есть только диск C он должен быть 2, а 12 это получается L почему он выводит 12 и как мне вывести нужную мне цифру с диском?
Ответы (1 шт):
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.
Так понятно?