读书人

在循环中一个char在无赋值情况下改变

发布时间: 2012-02-09 18:22:27 作者: rapoo

在循环中,一个char在无赋值情况下改变
在写一个名叫expand的函数,作用是,当输入1-9时,可以输出123456789;再如输入b-k时,可以输出bcdefghijk。

void expand (char target[ ], char result[ ]){
char c;
int i, j;

i = j = 0;
while ((c=target[i++]) != '\0'){

if (target[i] == '-' && target[i+1] >= c){
i++;
while (c < target[i]) // expand
result[j++] = c++;
}

else if(target[i] == '-'){
i++;
while (c > target[i]) // expand
result[j++] = c--;
}

printf("mark 1: c is %d\n", c); // 标记1
}

printf("mark 2: c is %d\n", c); // 标记2

result[j++] = c;
result[j] = '\0';
}


当我利用函数,输入“1-9”时,
得出结果如下


mark 1: c is 57
mark 1: c is 57
mark 2: c is 10
the contents are: 12345678


在这里,c的值在循环中是57,而出了循环之后,没有赋值的情况下,却变成了10,

请教一下为什么?


[解决办法]
因为你在“循环中”和“出循环之后”之间,进行了一次判断while ((c=target[i++]) != '\0'),正因为这次判断c的值从57变为了10(当c的int值为10的时候,char值恰恰为'\0'),所以才跳出了

读书人网 >C语言

热点推荐