基本数据类型

/*
 一、基本数据类型
    几种基本的数据类型:整型、实型、字符型
 
 二、整型
     整型类型标识符为int,在基本类型前可以加一个或多个类型修改符,signed(有符号), unsigned(无符号), short(短的), long(长的),默认的基本类型都是有符号的signed,int 与 signed int是一样的。
     
     有符号整数(默认为有符号 signed)
     整型     int    4字节     -2^31 ~ 2^31-1
     短整型    short  2字节     -2^15 ~ 2^15-1
     长整型    long long 8字节  -2^63 ~ 2^63-1
     
     无符号整数
     无符号整型      unsigned int       4字节     0 ~ 2^32-1
     无符号短整型     unsigned short     2字节     0 ~ 2^16-1
     无符号长整型     unsigned long long 8字节     0 ~ 2^64-1
 
 三、实型
     包括正实数、负实数和零,有两种形式:十进制表示法、科学记数法
     有三种类型:
     单精度实型  float       4字节     -3.4E-38 ~ 3.4E+38      7位有效数位
     双精度实型  double      8字节     -1.7E-308 ~ 1.7E+308     16位有效数位
     长双精度实型 long double 16字节    -3.4E-4932 ~ 1.1E+4932  19位有效数位
 
 四、字符型
 1)表示一个字符,用char表示,共128个基本字符,
 
 五、typedef给类型取别名
    给类型取一个新的名字
    格式:typedef type newname;
    例:
        typedef long long ll; //给long long 超长整型取了个ll的名字,后面就可以用ll类型了,当然了long long 还是可以用的
        ll la = 3L;
 
 六、字节运算符sizeof
    计算变量或类型所占用多少字节,有两种方式:sizeof(type),sizeof 变量
    
 
 
 */


#include <iostream>
#include <climits>
using namespace std;

int main() {
    // sizeof 字节运算符,计算占用字符,两种方式。
    int a = 100;
    cout<<sizeof(int)<<endl; // sizeof(type) 传入类型,要括号
    cout<<sizeof a<<endl; // sizeof 变量,可以不用括号
    cout<<endl;
    
    /*
     输出:
     4
     4
     */
    
    
    // 各整数范围的最小值与最大值
    cout<<"int: "<<INT_MIN<<"~"<<INT_MAX<<endl;
    cout<<"unsigned int: "<<0<<"~"<<UINT_MAX<<endl;
    cout<<"short: "<<SHRT_MIN<<"~"<<SHRT_MAX<<endl;
    cout<<"unsigned short: "<<0<<"~"<<USHRT_MAX<<endl;
    cout<<"long: "<<LONG_MIN<<"~"<<LONG_MAX<<endl;
    cout<<"unsigned long: "<<0<<"~"<<ULONG_MAX<<endl;
    cout<<"long long: "<<LLONG_MIN<<"~"<<LLONG_MAX<<endl;
    cout<<"unsigned long long: "<<0<<"~"<<ULLONG_MAX<<endl;
    cout<<endl;
    
    /*
     输出:
     int: -2147483648~2147483647
     unsigned int: 0~4294967295
     short: -32768~32767
     unsigned short: 0~65535
     long: -9223372036854775808~9223372036854775807  (注:32位机是4字节,64位机是8字节,本测试机是64位机)
     unsigned long: 0~18446744073709551615
     long long: -9223372036854775808~9223372036854775807
     unsigned long long: 0~18446744073709551615
     */
    return 0;
}