我知道我比这更好。
但是每次我运行数组而不是从1到5开始时它从49开始。我不知道为什么但是这开始变得烦人。
我确信这很简单,但我现在看不出来。 我想要做的是运行foreach循环并打印出阵列的那一部分 然后我想测试状态[]。
状态应仅在条件合适时打印测试编号。 testnum = arr [i]
int main(void)
{
char status[10];
int test1 = 0, test2 = 0, test3 = 0, test4 = 0;
int arr[] = {'1','2','3','4','5'};
int value[] = { '1','2','3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25'};
for (int i = 0; i < 5; i++)
{
printf(" \n %i# %i \n", i, arr[i]);
}
printf("test S: %i \n", test1);
printf("test MS: %i \n", test2);
printf("test MJ: %i \n", test3);
printf("test SH: %i \n", test4);
system("pause");
}
更新:抱歉意味着我说错了。而不是阅读和写作1 2 3 4 5它说49 50等等
答案 0 :(得分:1)
您的系统上的字符'1'
的值似乎为49。数字字符在任何解释50等的编码中都是连续的。
也许你的意思是:int arr[] = {1,2,3,4,5};
答案 1 :(得分:1)
int arr[] = {'1','2','3','4','5'};
单引号('
)包围的字符是字符文字。它们的值是执行字符集中该字符的值,可能是某些ASCII兼容字符集。在ASCII中,字符'1'
的值为49.请查看an ASCII table。
相反,您希望像这样初始化数组:
int arr[] = {1,2,3,4,5};
这些现在是整数文字,并且具有您期望的值。
答案 2 :(得分:1)
'1'与1不同。
'1'是字符1,就像'a'是字符a一样。当用作数字时,它相当于它的ASCII码49.如果你把它打印成数字,你得到49.数学运算通常没有意义。如果加倍,你得到'b'(ASCII码98)。
1是实际数字1.如果您将其打印为数字,则得到1.如果加倍,则得到2.