想问这个为啥不只有a的内容
#include <stdio.h>char a="hljhi";
char b="jk;jk";
char c[]="sfsdf";
int main(){
int i;
i=0;
while(i<5){
a&=0xDF;
i++;
}
printf("%s\n",a);
}
正常的数组都需要最后一个字符'\0'作为结束符
而且你这样定义字符数组不对吧,正确的代码如下
#include <stdio.h>
#include<stdlib.h>
char a={'h','l','j','h','i'};
char b={'j','k',';','j','k'};
char c[]={'s','f','s','d','f'};
int main(){
int i;
i=0;
while(i<5){
a&=0xDF;
i++;
}
printf("%s\n",a);
system("pause");
} 小甲鱼的铁粉 发表于 2021-1-31 21:23
正常的数组都需要最后一个字符'\0'作为结束符
而且你这样定义字符数组不对吧,正确的代码如下
改的并没有错,但并不建议这么写。
这个代码能够正常运行只是因为 a 是全局变量,a 被默认置0。
如果 a 不是全局/静态变量,那么还是会出现无节制打印的情况。
顺便,楼主拿字符串定义字符数组没有问题。 永恒的蓝色梦想 发表于 2021-1-31 21:43
改的并没有错,但并不建议这么写。
这个代码能够正常运行只是因为 a 是全局变量,a 被默认置0。
如 ...
感谢纠正{:10_297:}
#include <stdio.h>
#include <stdlib.h>
char a="hljhi";
char b="jk;jk";
char c[]="sfsdf";
int main(){
int i;
i=0;
while(i<5){
a&=0xDF;
i++;
}
printf("%s\n",a);
system("pause");
} 永恒的蓝色梦想 发表于 2021-1-31 21:43
改的并没有错,但并不建议这么写。
这个代码能够正常运行只是因为 a 是全局变量,a 被默认置0。
如 ...
为什么啊a会是0啊 yzk123 发表于 2021-1-31 22:23
为什么啊a会是0啊
这个就相当于部分初始化,未初始化的赋值为0 yzk123 发表于 2021-1-31 22:23
为什么啊a会是0啊
全局变量未初始化部分默认为0 定义数组时没有给结束符‘\0’预留空间,导致数组下标越界了,把“a”改为“a”即可
#include <stdio.h>
char a="hljhi";
char b="jk;jk";
char c[]="sfsdf";
int main(){
int i;
i=0;
while(i<5){
a&=0xDF;
i++;
}
printf("%s\n",a);
}
页:
[1]