C语言数组输出问题!
#include<stdio.h>1intmain(void)2{3intc;4charmax[10];5c='A';6while(c<='F'){7max[c]=c++...
#include <stdio.h> 1
int main (void) 2
{ 3
int c; 4
char max[10]; 5
c='A'; 6
while(c<='F'){ 7
max[c]=c++; 8
printf("%c\n",max[c]);} 9
} 10
为什么终端输出就6行空的阿!不是应该输出ABCDEF吗!求教下!8和9换成printf("%c\n",max[c]=c++);又可以输出了!这是为什么!有什么不同吗? 求大牛说详细点!本人新手! 展开
int main (void) 2
{ 3
int c; 4
char max[10]; 5
c='A'; 6
while(c<='F'){ 7
max[c]=c++; 8
printf("%c\n",max[c]);} 9
} 10
为什么终端输出就6行空的阿!不是应该输出ABCDEF吗!求教下!8和9换成printf("%c\n",max[c]=c++);又可以输出了!这是为什么!有什么不同吗? 求大牛说详细点!本人新手! 展开
7个回答
展开全部
错在了max[c]数组越界了,你定义了max[10]数组下标最大为9,但是c='A'时,c的ASCII为65,max[c]=c++也就是max[65]=c++,造成数组越界,要想输出ABCDEF可以在你的基础上改成
#include <stdio.h>
int main (void)
{
int c;
int i=0;
char max[10];
c='A';
while(c<='F')
{
max[i]=c++;
printf("%c\n",max[i]);
i++;
}
}
#include <stdio.h>
int main (void)
{
int c;
int i=0;
char max[10];
c='A';
while(c<='F')
{
max[i]=c++;
printf("%c\n",max[i]);
i++;
}
}
展开全部
首先你对数组的使用超限了,max[10] 只有 max[0]到 max[9]
max[c] c='A' 'A'是65 已经超出了 max的内存范围,那部分是别的地方在用。
所以放在前面 你的 max[c]=c++可能没存进去,也可能存进去了,又被别的地方改掉了。
之所就放在后面可以,那是因为后面用的不是 max[c]中的值,而是 max[c]=c++这个表达式的值,也就是c的值。
再定义一个 int i=0;
while(c<='F'){ //或者 i<6
max[i]=c++;
printf("%c\n",max[i]);
i++;
}
max[c] c='A' 'A'是65 已经超出了 max的内存范围,那部分是别的地方在用。
所以放在前面 你的 max[c]=c++可能没存进去,也可能存进去了,又被别的地方改掉了。
之所就放在后面可以,那是因为后面用的不是 max[c]中的值,而是 max[c]=c++这个表达式的值,也就是c的值。
再定义一个 int i=0;
while(c<='F'){ //或者 i<6
max[i]=c++;
printf("%c\n",max[i]);
i++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为c是A,它的ASC是65 你的max数组有65吗?
追问
懂了 谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的程序要这样写才对:
#include <stdio.h>
int main (void)
{
int c;
char max[10]={'0'};
c='A';
while(c<='F'){
max[c-'A']=c;
printf("%c\n",max[c-'A']);
c++;
}
}
#include <stdio.h>
int main (void)
{
int c;
char max[10]={'0'};
c='A';
while(c<='F'){
max[c-'A']=c;
printf("%c\n",max[c-'A']);
c++;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main (void)
{
int c;
int i=0
char max[10];
c='A';
while(c<='F'){
// max[c]=c++; 这种写法是一种未定义的行为,不要这样写
ma[i]=c++;
printf("%c\n",max[i]);
i++;
}
}
int main (void)
{
int c;
int i=0
char max[10];
c='A';
while(c<='F'){
// max[c]=c++; 这种写法是一种未定义的行为,不要这样写
ma[i]=c++;
printf("%c\n",max[i]);
i++;
}
}
追问
那这么写好点! 能打出来吗!谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询