c语言中‘0’值可否等于0?

来源:百度知道 编辑:UC知道 时间:2024/07/03 03:02:20
看以下程序,为何运行结果会是6?
#include<stdio.h>
void main()
{
char ch[7]="65ab21";
int i,s=0;
for(i=0;ch[i]>'0'&&ch[i]<'9';i+=2)
s=10*s+ch[i]-'0';
printf("%d",s);
}
我知道循环只进行一次
但为什么s=10*s+ch[i]-'0'进行后
s的值等于6呢?s的初值为0,ch[i]=6,‘0’的值是什么呢?

关键在于这个循环
for(i=0;ch[i]>'0'&&ch[i]<'9';i+=2)
s=10*s+ch[i]-'0';
实际上只运行了一次s=6
第二次i=2,ch[2]='a',a不在0~9以内,循环就终止了,明白吗?
另外'0'不等于0,字符'0'的ascii码是十进制48,16进制30

看ASCII码就知道了.

??
第二次的时候是 ch[2] = 'a' .......

为什么不是6?
循环一次就结束了,不是6是什么?