Определить размерность типа int на контроллере

Рейтинг: 6Ответов: 1Опубликовано: 19.09.2014

Можно ли написать какую-нибудь функцию, чтобы узнать размерность типа int на конкретном контроллере?

Ответы

▲ 2

Вот так можно посчитать кол-во бит в байте,

int CharBit() {
    unsigned char c = ~0U;
    int res = 1;
    for(; c >>= 1; ++res) {}
    return res;
}

а дальше (sizeof(int) * CharBit()). То есть кол-во char'ов и int'е умножить на кол-во битов в char'e равно кол-ву битов в int'e. Для x86: 4 * 8 = 32

Вот ещё:

int IntBit() {
    int tmp = 0, res = 0; // 0xfffff...
    while(++res, tmp >>= 1) {}
    return res;
}