下面程序的运行结果是:
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);
}
求输出结果
答案:2 悬赏:60 手机版
解决时间 2021-01-02 16:15
- 提问者网友:山高云阔
- 2021-01-02 09:45
最佳答案
- 五星知识达人网友:想偏头吻你
- 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
修改如下:
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为四个字节的情况下计算出来的结果,完全符合。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯