知识点5-6

来源:互联网 发布:淘宝收货时间最长 编辑:程序博客网 时间:2024/06/06 21:01

std::vector::at 和 std::vector::operator[]

operator[] 主要是为了与c语言兼容,他可以向c语言数组一样操作,但是at()其实是首选,因为他会进行边界检查,如果超过vector范围,将会抛出一个例外。

操作符++p,–p右边一定是变量

int main() {    int m = 5;    cout << --(m+1) << endl;    return 0;}

这里写图片描述

字长为6位的二进制有符号,其最小值为多少?

最大:011111–(31)
最小:100000–(-32)
在计算机显示:
原理是先读取正值100000,
取反011111,
加1:100000
总结1:N位有符号其范围-2^(N-1)~~2^(N-1)-1
总结2:负数表现形式:
先是读取正常原码,原来表现形式;
接着取反。但要注意:正数反码是其本身,负数反码符号位不变,其余取反。
最后加1。

类型转换问题

这里写图片描述

运算时候遵循如下规则:

参与运算类型不同,则需要类型转换;
自动由低精度向高精度转,int和long一起运算,转成long位的;
浮点运算都是双精度的,即使是float类型,实际运行时候还是先转换为double类型
在赋值运算过程中,需要将等号右边的转换为等号左边类型的。如果右边比左边长,那么将会丢失一部分内容。

题目 类型转换
注:本题强调的其实是小数点被去掉的问题,严格来讲不是右边位数比左边长的问题。

0 0