一些类型的sizeof()

#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会转化为最大的无符号数。

猜你喜欢

转载自blog.csdn.net/whiskey_wei/article/details/81144452