【发布时间】:2018-01-07 23:04:58
【问题描述】:
int I;
I=0;
while ((CH1[I]=CH2[I]) != '\0')
I++;
puts(CH1);
这个程序是把CH2复制到CH1里但是我没看懂循环条件(CH1[I]=CH2[I]) != '\0')?
【问题讨论】:
-
考虑
=与== -
这看起来像是 Kernighan strcpy 的过于复杂的形式:
while (*dst++ = *src++) {;} -
CH1[I]=CH2[I]将CH2元素中的值复制到CH1元素,如果为0,则(nul 字符串终止符)退出。 -
赋值
=返回分配的值。然后将其与'\0'进行比较。 -
空间很便宜;使用它们。所有大写字母(加上数字和下划线)的名称通常用于宏和枚举常量,而不是变量名。 (
for (int i = 0; (ch1[i] = ch2[i]) != '\0'; i++) ;会更习惯 C,假设你不能简单地写strcpy(ch1, ch2);。
标签: c while-loop boolean