○陈 2023-02-23 20:48 采纳率: 100%
浏览 23
已结题

指针地址的问题,数值的转换问题

#include<stdio.h>
void main(){
    int a[10]={1,2,3,4,5,6,7,8,9,0},*p;
    p=a;
    printf("%x\n",p);
    printf("%x\n",p+9);
}

该程序中有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是?
A.203 B.204 C.1a4 D.1a6
正确选项是哪一个?

  • 写回答

3条回答 默认 最新

  • Huazie 优质创作者: 编程框架技术领域 2023-02-23 21:27
    关注

    int 型 4个字节, p 如果输出十六进制为 194 , 那 p + 9 , 相当于 194 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 , 按照十六进制,每 16进1 .

      194 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 
    = 198 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 
    = 19c + 4 + 4 + 4 + 4 + 4 + 4 + 4 
    = 1a0 + 4 + 4 + 4 + 4 + 4 + 4 
    = 1a4 + 4 + 4 + 4 + 4 + 4 
    = 1a8 + 4 + 4 + 4 + 4 
    = 1ac + 4 + 4 + 4 
    = 1b0 + 4 + 4
    = 1b4 + 4
    = 1b8
    

    结果应该为 1b8

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月10日
  • 已采纳回答 3月2日
  • 创建了问题 2月23日