在我下面给出的程序中,我们将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;
}
答案 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
;尽管i
是int
。
printf("%d",i);
输出int
。
现在的差异是第一次会超过第三次迭代的0-127的ASCII范围,所以我建议你改变后一种形式(%d
)。