Avatar ·

O que o padrão C++ diz sobre o tamanho dos tipos int, long e long long?

Olá a todos! Acabei de começar a estudar C++ e me deparei com uma confusão. Eu sei que em diferentes compiladores e plataformas, os tamanhos dos tipos inteiros podem variar. Escrevi um código simples para verificar isso na minha máquina (Windows, MinGW): ```cpp #include using namespace std; int main() { cout << "Size of int: " << sizeof(int) << " bytes" << endl; cout << "Size of long: " << sizeof(long) << " bytes" << endl; cout << "Size of long long: " << sizeof(long long) << " bytes" << endl; return 0; } ``` No meu computador, obtive: int = 4 bytes, long = 4 bytes, long long = 8 bytes. Mas na internet li que no Linux x86_64 long pode ser 8 bytes. Meu amigo disse que em sistemas antigos de 16 bits, int era 2 bytes. Estou interessado em saber: o que o padrão C++ realmente garante? Posso confiar que int sempre terá 4 bytes? Por que long e int são iguais no meu Windows, mas diferentes no Linux? E como escrever código portável se os tamanhos variam?