永发信息网

求输出结果

答案:2  悬赏:60  手机版
解决时间 2021-01-02 16:15
  • 提问者网友:山高云阔
  • 2021-01-02 09:45
下面程序的运行结果是:
void main()
{
char ch[]="6543ab21";
int i,s;
for(i=0,s=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=s*10+ch[i]-'0';
printf("%d\n",s);
}
最佳答案
  • 五星知识达人网友:想偏头吻你
  • 2021-01-02 09:51
数组赋值错误
修改如下:

public class df {
public static void main(String[] args) {
String str="6543ab21";
char[] ch = str.toCharArray();
int i,s;
for(i=0,s=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=s*10+ch[i]-'0';
System.out.printf("%d\n",s);
}

}
输出结果:64
全部回答
  • 1楼网友:行雁书
  • 2021-01-02 10:44
楼主你好。 p为0x5f00,按%p打印p的话应该是00005f00(32位系统) *p+2为x+2即7。(注意*的优先级比+高,先取值再+2) **&p也就是x为5(*&其实就抵消了) 3**p就是3*x为15 p+4是一个地址,按理说应该按照%p来打印,%d打印的话应该是0x5f00换算成十进制即24320再+4*sizeof(int),也就是24320+4*2=24328。(注意这里p+4那个4是4倍的sizeof(int)) 所以最终结果应该是 00005f00 7 5 15 24328 我相信我的是正确结果。 试验了下: #include void main(){ int x=5, *p = &x; printf("%p %d %d %d %d\n", p, *p+2,**&p, 3**p, p+4); } 输出: 0012ff44 7 5 15 1245012 这是在x的地址为0x12ff44同时int为四个字节的情况下计算出来的结果,完全符合。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯