添加长值显示不同的o/p

sam*_*rat 4 c c++ embedded

我在添加长值示例时遇到问题

 typedef unsigned short  UINT16;

   UINT16* flash_dest_ptr;  // this is equal to in hexa 0XFF910000

   UINT16 data_length ; // hex =  0x000002AA &  dec = 682

  //now when I add  

  UINT16 *memory_loc_ver = flash_dest_ptr + data_length ;

  dbug_printf( DBUG_ERROR | DBUG_NAVD, " ADD hex =0x%08X\n\r",memory_loc_ver   );
Run Code Online (Sandbox Code Playgroud)

实际O/p = 0xFF910554

// shouldn't o/p be FF9102AA ?
Run Code Online (Sandbox Code Playgroud)

Dan*_*her 5

这是指针算法,所以

UINT16 *memory_loc_ver = flash_dest_ptr + data_length ;
Run Code Online (Sandbox Code Playgroud)

flash_dest_ptrdata_length * sizeof (UINT16)字节前进.

通常,sizeof (UINT16)将是2,和

2 * 0x2AA = 0x554
Run Code Online (Sandbox Code Playgroud)