sambowry方法的通用方法(C++):
#include <iostream>
#include <typeinfo>
template <typename T>
void print_sizeof(void)
{
std::cout << "sizeof(" <<
typeid(T).name() << ") == " <<
sizeof(T) << std::endl;
}
int main(void)
{
print_sizeof<short>();
print_sizeof<unsigned int>();
print_sizeof<long>();
print_sizeof<long long>();
print_sizeof<uint64_t>();
}
Run Code Online (Sandbox Code Playgroud)
请注意,编译器不需要为name提供实际的字符串,但大多数都是.
通常,如果包含,则无需知道确切的大小stdint.h
.定义了几种非常有用的类型.
如果您想要确切尺寸,请使用以下选项:
int8_t
uint8_t
int16_t
uint16_t
int32_t
uint32_t
int64_t
uint64_t
Run Code Online (Sandbox Code Playgroud)
如果您想要至少指定的大小,请使用以下:
int_least8_t
uint_least8_t
int_least16_t
uint_least16_t
int_least32_t
uint_least32_t
int_least64_t
uint_least64_t
Run Code Online (Sandbox Code Playgroud)
如果您希望至少为速度优化指定的大小,请使用以下命令:
int_fast8_t
uint_fast8_t
int_fast16_t
uint_fast16_t
int_fast32_t
uint_fast32_t
int_fast64_t
uint_fast64_t
Run Code Online (Sandbox Code Playgroud)
您可以使用sizeof运算符查询数据类型的长度.例如:
#include <stdio.h>
#include <inttypes.h>
#define PRINT_SIZEOF(type) printf("sizeof( " #type " ) == %zi\n", sizeof(type) )
int main(void){
PRINT_SIZEOF( short );
PRINT_SIZEOF( unsigned int );
PRINT_SIZEOF( long );
PRINT_SIZEOF( long long );
PRINT_SIZEOF( uint64_t );
}
Run Code Online (Sandbox Code Playgroud)
编辑:%我改为%zi