数据类型与常量变量

数据类型

  • 整数型:shortintlonglong long
    • short占用2字节,数据范围:-32768~32767,该类型因为能存放的范围太小,平时、比赛时都不用。
    • int占用4字节,数据范围:-2147483648~2147483848,C++中整数的默认类型,平时刷题最常用,比赛时需要注意是否够用。
    • long占用4或8字节,数据范围与intlong long一致,取决于平台,不好控制,平时、比赛时都不用。
    • long long占用8字节,数据范围:-9.22*10^{18} 到 9.22*10^{18},比赛时,作为int的替代品,专注于数据范围较大的题目。(数据范围只能18位以内,数据范围超级大的题目需要用到高精度算法,后续课程才能讲到)
  • 修饰符(了解):默认signed,代表数据有正有负,如果标记成unsigned,代表没有符号位(没有负数),如unsigned short代表0~65535。
  • 浮点型:floatdouble
    • float:单精度浮点数,占用4字节,有效数位6,不够精确,基本不用
    • double:双精度浮点数,占用8字节,有效数位16,C++语言默认实数类型
  • 字符型:char
    • 占用空间1字节,数据范围:-128~127或0~255,对于字符型我们只使用0~127这个范围,因此数据范围有无符号不影响使用
  • ASCII码:使用 7 位二进制表示字符,共 128 个字符(0-127)。
    • 字符组规律
      • 字符’0’~’9’:48~57
      • 字符’A’~’Z’:65~90
      • 字符’a’~’z’:97~122
    • ASCII码表
  • 布尔型:bool
    • bool类型只有两个值:true、false,对应1和0
  • sizeof指令:用于输出某个空间占用的大小
#include <iostream>
using namespace std;
int main() { 
    int a;
    cout << sizeof(a) << endl; // 4
    cout << sizeof(bool) << endl; // 1
    cout << sizeof(long long) << endl; // 8
    return 0;
}

类型转换

显示转换:相当于明确告诉电脑转换成什么类型

// 写法1:static_cast<目标类型>(当前数据)
int a=static_cast<int>(1.5); // 将double类型的1.5转换成int类型,再赋值给a
// 写法2:(目标类型)当前数据
int b=(int)1.5;

隐式转换:电脑根据自己的判断转换

  • 同类型转换:
    • 小空间->大空间无损:short->int->long long,float->double
    • 大空间->小空间丢失:long long->int->short,double->float
  • 异类型转换:
    • 整数->浮点赋值转换(同空间大小不丢失)
    • 浮点->整数赋值转换(小数部分丢失)
    • 整数->字符赋值转换(符合大空间转小空间)
    • 字符->整数赋值转换(只在ASCII码范围内)
    • 字符->整数通过数学计算转换
    • 布尔->整数赋值转换(只有0和1)
    • 整数->布尔赋值转换(只有0和1)
int a = 123;
long long b = a; // 赋值转换,大空间无损
int c = 1.5; // 赋值转换,小数部分丢失
char c = 'A';
int d = c; // 赋值转换,变成65('A'的ASCII码值)
bool e = 666; // 赋值转换,变成true(1)
int f = false; // 赋值转换,变成0(false)
char g = 'a';
cout << g+0; // 数学计算转换,值为97('a'的ASCII码值)

字母大小写转换

char c = 'A';
c += 32; // 变小写
c -= 32; // 变大写

常量变量

变量:通常指可以改变的量

常量:通常指无法改变的量

变量使用

int a; // 定义整型变量a,可以先不赋值
a=6; // 将a的值修改成6
a=7; // 将a的值修改成7
int b=4; // 定义整型变量b并初始化为4

常量使用

  • #define 预处理常量
  • const 定义常量
#include <iostream> 
using namespace std;
#define P 3.14 // 预处理3.14用P代替
int main(){
    // const 定义常量
    const int a=5; // 定义常量a的值为5,定义的同时必须赋值
    a=6; // 报错,常量无法修改
    return 0;
}