有人帮分析下马
#include<stdio.h>main()
{ char c;
while((c=getchar())!='?')
putchar(--c);
}
运行时,如果从键盘输入:Y7N7<回车>,则输出结果为(为什么为X)
#include"stdio.h"
main()
{ char*p="abcdefgh",*r;
long*q=;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",*r);
}
为什么输出结果为efgh? 首先,第一个问题,我在vc6编译运行得到结果是 X6M6<水平制表符>这个分析还是比较简单,getchar遇见回车开始读字符,每次读一个给c,如果不是问号,就对c-1,Y-1自然是X,7-1是6, N-1是M ,回车-1是水平制表符。没有?循环不退出继续等待用户输入。
第二个问题,在楼主的机器上,long类型应该占4个字节,long* 指针+1 那么其指向就后移4个字节,所以是指向了e的位置。(char是占一个字节)
页:
[1]