TCPPPL学习记录:类型

本文介绍了C++中布尔类型、整数(包括int、bool与指针)的隐式转换,以及算术和逻辑运算规则。同时涵盖了字符类型、浮点类型(如float、double)和枚举的使用、声明及类型转换规则。
摘要由CSDN通过智能技术生成

类型

布尔类型

bool与int可以隐式转换
定义:true对应1false对应0;非零整数对应true,0对应false

bool b = 6 //true
int i = false //0

在算术和逻辑表达式里,bool先转为int参与运算,再转为bool

void g()
{
    bool a = true;
    bool b = true;

    bool x = a + b;//x=true,因为a+b=2
    bool y = a | b;//y=true,因为a|b=1
}

指针也可以隐式转换为bool,非零指针true,具有0值的指针为false

字符类型

一个char有8个二进制位
signed char -128~127
unsigned char 0~255
wchar_t (?)可以储存更多的字符类型

字符文字量(字符常量):

char c = '0';

此处’0’表示c++程序运行的计算机上的字符集(?中该字符的整数值。'0’的值为48

整数类型

int,unsigned int,signed int
short int(short)
long int(long)
试图使用unsigned整形以便多获得一位来表示正整数不是好想法,通过将整形声明为unsigned来保证某些值总是为正的企图常常被隐藏的类型转换规则破坏

整形文字量:十进制,八进制,十六进制和字符文字量
编译器会对文字量过长,无法表示的情况给出警告

以0x开头的表示十六进制,大小写不区分
以0开头的标识八进制

后缀U可以显示写出unsigned文字量,L可以显示写出long文字量

浮点类型

单精度float
双精度double
扩展精度long double

浮点文字量:默认类型为double
需要float类型的浮点文字量加后缀f或F
需要long double类型的浮点文字量加后缀l或L

大小

在不同机器以及不同编译器的环境中类型的大小不一定相同(?
C++对象的大小是用char的大小的倍数表示的,按照定义char的大小为1(字节)。使用C++标准库的基本类型大小满足:

1 = sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long)
1 ≤ sizeof(bool) ≤ sizeof(long)
sizeof(char) ≤ sizeof(wchar_t) ≤ sizeof(long)
sizeof(float) ≤ sizeof(double) ≤ sizeof(long double)
sizeof(N) = sizeof(signed N) ≤ sizeof(unsigned N)

保证char至少有8位,short至少有16位,long至少有32位

void

没有类型为void的对象

void x;//错误
void f();//函数f无返回值
void* pv;//指向类型不明的对象的指针

枚举

声明:

enum myEnum//可以不命名
{
    A,B,C
};

每一个枚举都是独立的类型,枚举符的类型就是它所在的那个枚举

枚举可以用整形的Constant-expression(常量表达式来初始化)
1.在未初始化的时候枚举符所赋的值从0递增
2.若所有枚举符的值非负,则枚举表示的范围为[0, 2 k 2^k 2k-1],其中 2 k 2^k 2k是能使所有枚举符位于此范围内最小的2的k次幂
3.若存在枚举符的值为负,则枚举表示的范围为[ − 2 k -2^k 2k, 2 k 2^k 2k-1]

enum {A,B} //[0,1]
enum {A=3,B=9}//[0,15]
enum {A=-10,b=1000000}//[-1048576,1048575]

一个整型值可以显式转为枚举值。除非这种转换的结果位于枚举的范围之外,否则是无意义的

enum flag {x=1,y=2,z=4,e=8}
flag f1 = 5;//类型错
flag f2 = flag(5);//可以
flag f3 = flag(z|e);//可
flag f4 = flag(99);//无意义

一个枚举的sizeof值就是能容纳其范围的整形的sizeof,而且不会大于sizeof(int),除非某个枚举的值不能用int表示也不能用unsigned int表示

枚举是用户定义的类型,可以定义枚举的运算操作

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值