C++学习记录 四:基本内置类型 & 变量

1.当一个算术表达式中既有无符号数又有int值时,那个int值就会转换成无符号数
例如:

unsigned u = 10;
int i = -42;
std::cout << u + i << std::endl;

2.当赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数
例如:

unsigned
char(8位)可以表示0~255区间的值,但如果我们赋了一个区间外的值,比如-1,则实际的结果是该值对256取模后所得的余数,因此,-1赋给unsigned
char后打印显示为255

其中,-1对256的求模运算为:
-1 / 256 = 0…-1,(趋向于负无穷)
易与求模运算混淆的为求余运算,感兴趣的可以去查查二者的区别。

3.signed short int 与 unsigned short int

这两者之间运算时,有符号数并不会转化为无符号数再去做运算

4.signed与unsigned

对于浮点数,前缀符signed与unsigned不能加在float类型或double类型上,实际上,浮点数本身都是有符号数

5.默认情况下,十进制字面值是带符号数,八进制和十六进制字面值既可能是带符号的也可能是不带符号的

如果我们使用了一个形如-42的负十进制字面值,那个负号并不在字面值之内,它的作用仅仅是对字面值取负值而已

6.初始化和赋值是两个完全不同的操作

初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代

7.列表初始化:
例如:

int unuts_sold = 0;
int unuts_sold = {0};
int unuts_sold{0};
int unuts_sold(0);

注意:

long double ld = 3.1415926536;
int a{ ld }, b = { ld }; // 错误:转换未执行,因为存在丢失信息的危险
int c( ld ), d = ld; // 正确:转换执行,且确实丢失了部分值

8.默认初始化

1. 如果定义变量时没有指定初值,则变量被默认初始化
2. 如果是内置类型的变量未被显示初始化,它的值由定义的位置决定:

【1】 定义在任何函数体之外的变量被初始化为0:

在这里插入图片描述

【2】 定义在函数体内部的内置类型变量将不被初始化:

在这里插入图片描述

3. 每个类各自决定其初始化对象的方式

【1】 绝大多数类都支持无须显式的初始化而定义对象
【2】 一些类要求每个对象都显示的初始化,此时如果创建了一个该类的对象而未对其做明确的初始化操作,将引发错误
【3】 类的对象如果没有显示地初始化,则其值由类确定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值