C语言22课有个地方看不懂
#include <stdio.h>#define MAX 1024
int main()
{
char str;
char *target = str;
char ch;
int length = 0;
printf("请输入一个字符串:");
fgets(str, MAX, stdin);
while (1)
{
ch = *target++;
if (ch == '\0')
{
break;
}
if ((int)ch < 0)
{
target += 1;//这个语句是什么意思?
}
length++;
}
printf("您总共输入了 %d 个字符!\n", length-1 );
return 0;
} 本帖最后由 jhq999 于 2021-10-4 07:12 编辑
target += 1;相当于target =target +1;或target++;
if ((int)ch < 0)
{
target += 1;//这个语句是什么意思?
}
容易出bug,如果target 数组没有初始化为0;
‘\0’前面的字符<0,由于前面已经加一,在这时*target='\0',再 target += 1;不就越过'\0'而造成越界死循环? jhq999 发表于 2021-10-4 07:01
target += 1;相当于target =target +1;或target++;
容易出bug,如果target 数组没有初始化为0;
*targe++是字节加1还是读取下一个元素 superswagy2002 发表于 2021-10-4 10:43
*targe++是字节加1还是读取下一个元素
“*targe++”=》先“*targe”再+1
"*++targe"=》先+1再“*targe”
页:
[1]