Если я выполню побитовое И между 8-битным целым (int8_t
) и 32-битным целым (int
), результатом будет 8-битное или 32-битное целое число?
Я использую GNU / Linux и компилятор GCC
Чтобы поставить вопрос несколько иначе, перед выполнением побитового И отбрасываются ли первые 24 бита 32-разрядного целого числа, или 8-разрядное целое число первого типа приведено к 32-разрядному целому числу?
РЕДАКТИРОВАТЬ: В этом небольшом коде
#include <iostream>
#include <stdint.h>
int main()
{
int i=34;
int8_t j=2;
std::cout<<sizeof((i&j))<<std::endl;//Bitwise and between a 32 bit integer and 8 bit integer
return 0;
}
Я получаю вывод как 4. Я предполагаю, что это означает, что тогда результат будет 32-разрядным целым числом. Но я не знаю, зависит ли результат от машины, компилятора или ОС.