上周六参加微软实习生笔试受打击了,考的C++的东西不难,但很细节,决定从头开始复习一下C++了
1、C++的标识符第一个字母必需是大写字母、小写字母或下划线,其他字符可由大写字母、小写字母、下划线或数字0-9组成,不能包含空格和“+、-、;”之类的特殊字符,大小写敏感
2、整型变量及其取值范围
在内存中,数值是以补码形式表示的,一个正整数的补码和该数的源码相同,求负数的补码:符号位为1不变,其他位将该数的绝对值的二进制形式按位取反再加一。
类型 | 长度(字节) | 取值范围 |
char(signed char) | 1 | -128~127即-2^7~(2^7-1) |
unsigned char | 1 | 0~255即0~(2^8-1) |
short int | 2 | -32768~32767即-2^15~(2^15-1) |
unsigned short int | 2 | 0~65535即0~(2^16-1) |
int(signed int) | 4 | -2^31~(2^31-1) |
unsigned int | 4 | 0~(2^32-1) |
long | 4 | -2^31~(2^31-1) |
3、整型数据的溢出
- int main()
- {
- int a,b;
- a=2147483647;
- b=a+1;
- printf("%d,%d\n",a,b);
- return 0;
- }
运行结果:
2147483647,-2147483648
一个int型变量只能表示-2147483648到2147483647的,如果不在此范围时发生溢出,但运行时并不报错,它好像汽车里程表一样达到最大值后,又从最小值开始计数。
4、浮点数
类型 | 长度(字节) | 取值范围 |
float | 4 | -3.4*10^38~3.4*10^38 |
double | 8 | -1.7*10^308~1.7*10^308 |
dloat保存的字节格式如下:
地址 +0 +1 +2 +3 内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 1 8 23 这里 S 代表符号位,1是负,0是正 E 偏移127的幂,二进制阶码=(EEEEEEEE)-127。 M 24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了较高的有效位数,提高了精度。指数部分 占用8-bit的二进制数,可表示数值范围为0-255。 但是指数应可正可负,所以IEEE规定,此处算出的次方须减去127才是真正的指数。所以float的指数可从 -127到128.其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double型同理,但E 偏移应该减去1023,
很基础,表笑我,待续待续