淘先锋技术网

首页 1 2 3 4 5 6 7

复习难点

1.float类型在内存中的存储方式

 指数位的计算方法,找到化为二进制数后的浮点数中第一个1的位置,如数12.25中应该将小数点左移3位,移到浮点数中第一个1的位置,再比如数0.25,化为二进制为0.01,移到第一个1的位置,应该是向右移2位,那么,得到移动位数后,我们应该怎样计算指数位的值呢?

  首先,我们应该明确指数位起步就有值,大小是127,如果我们得到应该左移三位,那么就应该给127+3,如果我们得到应该右移三位,就应该给127-3,最后将所得到的值化为二进制数存放在指数位,这里需要注意指数位是无符号整数,范围是0-255,尾数位存储的是小数点以后的数字,不足位补0,如12.25在内存中的存储应该是符号位为0,指数位为1000 0011,尾数位为1000 1000 0000 0000 0000 000,0.25在内存中的存储应该是符号位为0,指数位 0111 1101,尾数位为0000 0000 0000 0000 0000 000

 2.类型转换

(下图为隐式类型转换)

 代码检测:

#include <iostream>
#include <string>
using namespace std;

int main()
{
   //不同类型的变量相加,应该先转换类型,将类型转换为同一个类型,在相加
	unsigned char i = -3;     //1111 1101
	char j = 2;               //0000 0010
	cout << typeid(i + j).name() << endl;
    //如上,应该先将i,j转换为int类型,将i转换为253,将j转换为2,相加得到值为255

	printf("%d\n", i + j);    //255

	unsigned char a = 2;      //0000 0010
	char b = -3;              //1111 1101
	cout << typeid(a + b).name() << endl;
    //如上,将a转换为2.将b转换为-3,相加得到-1

	printf("%d\n", a + b);    //-1
    //只有无符号的负数转换为别的类型时,可能会发生变化
}

 

 3.优先级

优先级1

运算符()   含义:圆括号

          []     含义:下表运算符

          ->    含义:指向结构体成员运算符

          .       含义:结构体成员运算符

优先级2

运算符 !   含义:逻辑非运算符

            ~     含义:按位取反运算符

           ++    含义:自增运算符

            --     含义:自减运算符

            -      含义:负号运算符

     (类型)含义:类型转换运算符

            *       含义:指针运算符

            &      含义:取地址运算符

        sizeof   含义:长度运算符

优先级3

运算符:*     含义:乘法运算符

               /     含义:除法运算符

              %    含义:求余运算符

优先级4

运算符:+    含义:加法运算符

               -     含义:减法运算符

优先级5

运算符:<<    含义:左移运算符

               >>   含义:右移运算符

优先级6

运算符:<  <=  >  >=      含义:关系运算符

优先级7

运算符:==     含义:等于运算符

               !=     含义:不等于运算符

优先级8

运算符:&      含义:按位与运算符

优先级9

运算符:^      含义:按位异或运算符

优先级10

运算符:|       含义:按位或运算符

优先级11

运算符:&&    含义:逻辑与运算符

优先级12

运算符:||      含义:逻辑或运算符

优先级13

运算符:?   :        含义:条件运算符

优先级14

运算符:=   +=    -=    *=     /=    %=     >>=    <<=    &=   ^=    |=        含义:赋值运算符

优先级15

运算符:,          含义:逗号运算符

4.数组

int  arr[10]    这是一个数组名为arr,存储10个整型元素

&arr+1    取数组arr的地址,就是代表整个数组,+1后就会移动一个数组的大小

arr+1      代表数组下标为1的地址

int   arr[3][4]   这是一个二维数组,存储10行10列的整型数

如图:在二维数组中, &arr+1代表的是arr最后的位置,(arr+1)代表的是这个二维数组中存储的一维数组,因此代表就是第二行的第一元素的地址,这个位置同样可以用&arr[0]+1来表示,同理,arr[0]+1和&arr[0][0]+1代表的是第一行第二个元素的地址。