|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 huaidisk 于 2013-2-7 17:14 编辑
今天无意打了几行代码,好奇之下,随便输了几个数,发现了点规律,然后就迷茫了。。。
代码:
#include <stdio.h>
#include <conio.h>
void main()
{
int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
a = 0 ;
b = 1 ;
c = 2 ;
d = 3 ;
e = 4 ;
f = 5 ;
g = 126;
h = 127;
i = 128;
j = 129;
k = 130;
l = 131;
m = 252;
n = 253;
o = 254;
p = 255;
q = 256;
r = 257;
s = 258;
t = 259;
u = 383;
v = 384;
w = 385;
x = 386;
y = 387;
z = 388;
printf("%c , %d\n", a, a);
printf("%c , %d\n", b, b);
printf("%c , %d\n", c, c);
printf("%c , %d\n", d, d);
printf("%c , %d\n", e, e);
printf("%c , %d\n", f, f);
printf("%c , %d\n", g, g);
printf("%c , %d\n", h, h);
printf("%c , %d\n", i, i);
printf("%c , %d\n", j, j);
printf("%c , %d\n", k, k);
printf("%c , %d\n", l, l);
printf("%c , %d\n", m, m);
printf("%c , %d\n", o, o);
printf("%c , %d\n", p, p);
printf("%c , %d\n", q, q);
printf("%c , %d\n", r, r);
printf("%c , %d\n", s, s);
printf("%c , %d\n", t, t);
printf("%c , %d\n", u, u);
printf("%c , %d\n", v, v);
printf("%c , %d\n", w, w);
printf("%c , %d\n", x, x);
printf("%c , %d\n", y, y);
printf("%c , %d\n", z, z);
getch();
}
其中,从0到128都有其对应的ASCII值,当然,其中有许多很奇怪的图案,比如1和2是个很灵异的笑脸 。可能是我的VC6.0++里的ASCII比较旧了吧,只有128个字符 。从129开始,一直到254都没有字符,全为问号。255看起来像是2个空格,很特殊。然后从256开始,又进入了循环,直到第384。从385开始,一直到510,就都是问号了,然后就分别从512,1024......开始进入循环,128个数之后,又是问号了。。。
然后,问题来了:
首先,在ASCII表上看到的1、2、3直到32,以及127和128,都是一些命令之类的东西,为什么到这里就变成了一些很灵异的图案了呢?
其次 ,为什么分别从第256,512,1024......开始就又一次循环了呢?是跟内存有关吗?有什么关系?
最后,那个第255是怎么回事,看上去像是2个空格。第511和1023也是这样。。
补充,如果把int 改为char ,运行,就会发现,第一列与没变之前是一样的,第二列就会出现许多负值,这又是为什么喃。。
求各位大神帮忙解释一下啦。。
|
|