循环语句的问题
我想写一个ascii码表的一部分,用for循环语句写,但是不知道为什么无限循环,我水平低刚开始学,看不出来,麻烦大家帮忙看看!!!#include <stdio.h>
void main(void)
{
char a , b;
for(a=33;a<=56;a++)//24行
{
for(b=a;b<=a+72;b+24)//4列
{
printf("%c %d\t",b ,b);//输出字符和对应的数字
}
printf("\n");//换行
}
}
因为余了两个格所以最后两个肯定是乱码...
33
!
57
9
81
Q
105
i
34
"
58
:
82
R
106
j
35
#
59
;
83
S
107
k
36
$
60
<
84
T
108
l
37
%
61
=
85
U
109
m
38
&
62
>
86
V
110
n
39
`
63
?
87
W
111
o
40
(
64
@
88
X
112
p
41
)
65
A
89
Y
113
q
42
*
66
B
90
Z
114
r
43
+
67
C
91
[
115
s
44
,
68
D
92
\
116
t
45
-
69
E
93
]
117
u
46
.
70
F
94
^
118
v
47
/
71
G
95
_
119
w
48
0
72
H
96
'
120
x
49
1
73
I
97
a
121
y
50
2
74
J
98
b
122
z
51
3
75
K
99
c
123
{
52
4
76
L
100
d
124
|
53
5
77
M
101
e
125
}
54
6
78
N
102
f
126
~
55
7
79
O
103
g
56
8
80
P
104
h
输不出来,一个死循环 你看这样行吗?
#include <stdio.h>
int main ()
{
char ch;
for (ch = 0x20; ch <= 0x7E; ch++)
{
printf ("%c %d\t", ch, ch);
}
return 0;
} 人造人 发表于 2016-3-4 17:26
你看这样行吗?
有错误{:10_266:} 夜雨de街灯 发表于 2016-3-4 17:32
有错误
看看错误信息 人造人 发表于 2016-3-4 17:33
看看错误信息
我想竖着顺下来,不是打横{:10_245:} 夜雨de街灯 发表于 2016-3-4 18:10
我想竖着顺下来,不是打横
不明白,可否说清楚点? 夜雨de街灯 发表于 2016-3-4 18:10
我想竖着顺下来,不是打横
这样吗?
#include <stdio.h>
int main ()
{
char ch;
for (ch = 0x20; ch <= 0x7E; ch++)
{
printf ("%c %d\t", ch, ch);
if (ch % 4 == 0)
{
printf ("\n");
}
}
return 0;
} 人造人 发表于 2016-3-4 18:36
这样吗?
等等试试,现在不在家,先谢谢你先啦!! 把 chara, b; 换成inta, b; 还有 for(b=a; b<=a+72; b+24)//4列 换成for ( b=a; b<=a+72; b=b+24)
人造人 发表于 2016-3-4 18:36
这样吗?
顺序还是打横过的,九楼解决了我的问题,不过还是要谢谢你{:5_109:} 满满 发表于 2016-3-4 20:42
还有 for(b=a; b
非常谢谢,解决了{:10_257:} 满满 发表于 2016-3-4 20:39
把 chara, b; 换成inta, b;
为什么用char类型不行啊{:9_241:} 夜雨de街灯 发表于 2016-3-4 23:13
为什么用char类型不行啊
因为 char 占一个字节的空间还是有符号的 在 for 循环中超出储存范围你也可以用unsigned char使用本次案列但我认为最好使用 int 型占四个字节
#include <stdio.h>
//此函数属于数据溢出,超出了字符空间的范围
void main(void)
{
char a , b;
for(a=33;a<=56;a++)//24行
{
for(b=a;b<=a+72;b=b+24)//4列
{
printf("%c %d\t",b ,b);//输出字符和对应的数字
// if (b==33+24+24)//调试循环体内的循环是否能运行
// goto L; //最好使用goto,跳出循环
}
if (a==34) //调试循环体内的循环的次数,在使用本次调试多出了很多几个无用的数
break;
printf("\n");//换行
}
L: printf ("程序执行完毕!");//调试语句
}
/*仔细分析一下,当b=105时,继续循环,然后 b=b+24=129,超出了有符号的字符的占用的空间,造成数据溢出 */
满满 发表于 2016-3-5 08:20
因为 char 占一个字节的空间还是有符号的 在 for 循环中超出储存范围你也可以用unsigned char使用 ...
感谢你的回答{:10_257:} 满满 发表于 2016-3-5 08:20
因为 char 占一个字节的空间还是有符号的 在 for 循环中超出储存范围你也可以用unsigned char使用 ...
之前一直以为char是有无符号的{:10_245:}
页:
[1]