因为每个循环都读错了数组

时间:2014-02-21 23:29:14

标签: c++ c

我知道我比这更好。

但是每次我运行数组而不是从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等等

3 个答案:

答案 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.