zoukankan      html  css  js  c++  java
  • 在32位小端的机器

    在32位小端的机器上,如下代码输出是什么:

    1 char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08};     
    2  short *pshort = (short *)array;     
    3  int *pint = (int *)array;     
    4  int64 *pint64 = (int64 *)array;     
    5  printf("0x%x , 0x%x , 0x%x , 0x%x", *pshort , *(pshort+2) , *pint64 , *(pint+2));

    答案:

    0x201 , 0x605 , 0x807060504030201 , 0x0

    小端机器的数据高位字节放在高地址,低位字节放在低地址。x86结构为小端模式。
    pshort占用2个字节,在内存中的16进制为0x01 0x02,对应的16进制数为0x0201。
    pshort + 2指向array数组的下标为4的元素,占用2个字节,在内存中的16进制为0x05 0x06,对应的16进制数为0x0605。 
    pint64的int64类型不确定,但根据名字可以看出占用8个字节,对应的16进制形式为0x807060504030201。
    pint  + 2占用4个字节,指向的array数组的下标为8的元素,8-11个元素没有指定数组的初始化值,默认为0,因此*(pint + 2)对应的16进制为0。
  • 相关阅读:
    js入门之DOM
    js入门之字符串常用的方法
    js入门之内置数组对象 Array
    js入门之内置对象Date
    js入门之内置对象Math
    js入门之对象
    js入门之函数
    js入门之数组
    js入门第二篇之流程控制语句
    js入门第一篇
  • 原文地址:https://www.cnblogs.com/WonderHow/p/4442806.html
Copyright © 2011-2022 走看看