在c中打印数组元素时出现意外输出
我正在创建一个简单的c程序,下面的程序输出应该是2,但我得到50不知道为什么(我是c新手)请让我知道我在哪里失踪在c中打印数组元素时出现意外输出,c,arrays,C,Arrays,我正在创建一个简单的c程序,下面的程序输出应该是2,但我得到50不知道为什么(我是c新手)请让我知道我在哪里失踪 #include<stdio.h> int main(int argc, char** argv) { int a[4]={'1','2','2','\0'}; printf("The value of a is %d",a[1]); return 0; } #包括 int main(int argc,字符**argv){ INTA[4]={'1','
#include<stdio.h>
int main(int argc, char** argv) {
int a[4]={'1','2','2','\0'};
printf("The value of a is %d",a[1]);
return 0;
}
#包括
int main(int argc,字符**argv){
INTA[4]={'1','2','2','0'};
printf(“a的值为%d”,a[1]);
返回0;
}
您使用初始化数组<代码>'2'具有整数值50 将数组初始化为
int a[4]={1,2,2,0};
如果希望它包含整数1,2,2,0。或
#include<stdio.h>
int main(int argc, char** argv) {
char a[4]="121";
printf("The value of a is %c",a[1]);
return 0;
}
#包括
int main(int argc,字符**argv){
字符a[4]=“121”;
printf(“a的值为%c”,a[1]);
返回0;
}
如果您想要一个可以作为字符串处理的字符数组。(注意此处使用了
%c
格式说明符。)50
是'2'
的ASCII码
如果需要修复,请将'2'
替换为2
当使用像'2'
C这样的字符文本时,实际上将它们视为整数类型。当您使用%d
格式说明符打印它时,您告诉C将值打印为整数
如果要保留如下数组元素:'2'
,则需要将printf格式更改为%c
,以便在控制台中获得2
这条线
int a[4]={'1','2','2','\0'};
告诉编译器创建一个长度为4的整数数组,并将右大括号中的整数放入其中
C
中的字符是1字节整数,1
是1
的字符,表示其ASCII码的整数值,即50。因此数组的第一个元素的值为50
要解决这个问题,你应该写
int a[4]={1,2,2,0};
请记住,0
不能用作数组结束标记,因为它只是一个数字
如果您想得到122
输出,那么就这样做
char a[4]={'1','2','2','\0'};
printf("The value of a is %s",a);
因为C
中的字符串是以0
作为终止符号的字符数组
您还可以让编译器为您计算值
char a[]={'1','2','2','\0'};
您正在分配字符而不是整数: 注
'2' means char use %c
2 manes int use %d
"2" means string. use %s
所有这些都是不同的:
在代码中,您可以打印2:
int main(int argc, char** argv) {
char a[4]={'1','2','2','\0'};
printf("The value of a is %c",a[1]);
return 0;
}
当你写
inta[4]={'1','2','2','0'}
您实际使用数字1和2的ASCII代码初始化了数组。
这是因为您将它们括在单引号中,从而使它们成为字符而不是整数。
因此,数组实际上取inta[4]={49,50,50,0}代码>
要更正它,您应该写入不带引号的整数:
int a[4]={1,2,2,0};
还要注意,整数数组不需要以'\0'
结尾。这只适用于字符数组。请您回答我的一些问题,在这里重新分级。显然,这在任何语言中都“有效”。例如,在javaSystem.out.println((int)'2')代码>打印50
。我已更正。不幸的是,除非你现在编辑问题,否则我不能删除我的否决票。我不在乎你的否决票。此网站提供的信息很好,不适用于销售代表:)