在C中,角色如何运作

时间:2016-03-25 08:16:16

标签: c char ascii

在我下面给出的程序中,我们将j作为一个角色。 我们取j=1但ascii值为1。那么为什么答案是15? j是否为整数?

#include<stdio.h>

int main()
{
    int i=0;
    char j;

    for(j=1 ; j <=5 ; j++)
    {
        printf("-%c\n",j);
        i=i+j;
        printf("%c\n",i);
    }

    printf("%d",i);

    return 0;
}

2 个答案:

答案 0 :(得分:2)

在循环中计算出数字1,2,3,4,5的总和,实际上等于15。

在此表达式中

i=i+j;
由于整数提升,

操作数j转换为int类型,int类型的结果存储在变量i中。

在本声明中

printf("%d",i);

此结果作为整数值输出。

如果你想处理字符值'1','2'等等,你可以编写循环

for ( j = '1' ; j <= '5' ; j++ )

如果使用ASCII编码,则变量i将包含值49,50,51,52,53的总和。

答案 1 :(得分:0)

int i=0;

i声明为int

char j;

j声明为char

for(j=1 ; j <=5 ; j++)

用整数初始化j,用 1 的ASCII值初始化它,49你可以用

for(j='1' ; j <= '1' + 5 ; j++)

但我不明白你的最终目标是什么以及这对你有用吗?

    printf("%c\n",i);

输出char;尽管iint

printf("%d",i);

输出int

现在的差异是第一次会超过第三次迭代的0-127的ASCII范围,所以我建议你改变后一种形式(%d)。