phoemur
(usa Debian)
Enviado em 05/01/2018 - 21:19h
Para os tipos nativos (POD = plain old data) depende da arquitetura e da implementação.
Se ainda me lembro, apenas o char é definido como tendo 1 byte (8bits) de tamanho, o resto depende.
sizeof(char) == 1 sempre.
Porém nem sempre um int vai ter 32 bits. Em um processador ARM um int pode ter 16 bits por exemplo, principalmente em sistemas embarcados...
Em C++ você pode saber o maior número representado por um int por exemplo com:
std::numeric_limits<int>::max()
exemplo:
http://en.cppreference.com/w/cpp/types/numeric_limits
#include <limits>
#include <iostream>
int main()
{
std::cout << "type\tlowest\thighest\n";
std::cout << "int\t"
<< std::numeric_limits<int>::lowest() << '\t'
<< std::numeric_limits<int>::max() << '\n';
std::cout << "float\t"
<< std::numeric_limits<float>::lowest() << '\t'
<< std::numeric_limits<float>::max() << '\n';
std::cout << "double\t"
<< std::numeric_limits<double>::lowest() << '\t'
<< std::numeric_limits<double>::max() << '\n';
}
Em C existem macros como por exemplo INT_MAX porém em C++ a maneira mais correta, e também mais flexível é utilizar std::numeric_limits
*** Você pode usar as definições do limits.h / climits e usar um std::int32_t e daí você garante que estará usando um int com 32 bits de tamanho. Veja:
http://en.cppreference.com/w/cpp/types/integer