在循环中,一个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'),所以才跳出了