#include<iostream>
class A{};
class B{char m_data;};
class C
{
char m_data[100];
};
class D
{
char* m_data;
D() : m_data(new char[100]){}
~D()
{
delete []m_data;
}
};
static void testSizeof()
{
std::cout << "bool sizeof: " << sizeof(bool) <<std::endl;
std::cout << "char sizeof: " << sizeof(char) <<std::endl;
std::cout << "int sizeof: " << sizeof(int) <<std::endl;
char data[10];
char* pData = data;
std::cout << "char data[10] sizeof: "<< sizeof(data) << std::endl;
std::cout << "char* sizeof: " << sizeof(pData) << std::endl;
std::cout << "A sizeof: " << sizeof(A) << std::endl;
std::cout << "B sizeof: " << sizeof(B) << std::endl;
std::cout << "C sizeof: " << sizeof(C) << std::endl;
std::cout << "D sizeof: " << sizeof(D) << std::endl;
std::cout << "size_t sizeof: " << sizeof(std::size_t) << std::endl;
}
static void unsignedAndSigned()
{
std::size_t a = 10;
int b = -1;
if(b < a)
std::cout << "right\n";
else
std::cout << "bad\n";
}
int main()
{
testSizeof();
unsignedAndSigned();
return 0;
}
结果:
bool sizeof: 1
char sizeof: 1
int sizeof: 4
char data[10] sizeof: 10
char* sizeof: 4(32位4字节,64位8字节)
A sizeof: 1
B sizeof: 1
C sizeof: 100
D sizeof: 4 (8)
size_t sizeof: 4 (8)
bad
size_t无符号整数
当无符号整数与有符号整数做比较的时候,有符号整数转型为无符号数,然后按照无符号数的规则比较,但是-1会转化为最大的无符号数。