if (s[i] != c) { s[j] = s[i]; j++;}
我们在第1章中编写的函数getline是类似结构的另外一个例子。我们可以将该函数中 的if语句:
if (c == '\n') { s[i] = c;++i;}
用下面这种更简洁的形式代替:
if (c == '\n') s[i++] = c;
我们再来看第三个例子。考虑标准函数strcat(s, t),它将字符串t连接到字符串s 的尾部。函数strcat假定字符串s中有足够的空间保存这两个字符串连接的结果。下面编 写的这个函数没有任何返回值(标准库中的该函数返回一个指向新字符串的指针):
/* strcat: concatenate t to end of s; s must be big enough */ void strcat (char s[], char t[])
{int i, j;
while (s[i] != '\〇')/* find end of s */ i++;
while ((s [i++] = t[j+ + ])丨='\0') /* copy t */
在将t中的字符逐个拷贝到s的尾部时,变量i和j使用的都是后缀运算符++,从而保证在
循环过程中i与j均指向下一个位置。 赋值运算符与表达式
在赋值表达式中,如果表达式左边的变量重复出现在表达式的右边,如: i = i + 2
则可以将这种表达式缩写为下列形式: i+= 2
其中的运算符+=称为赋值运算符。
大多数二元运算符(即有左、右两个操作数的运算符,比如+)都有一个相应的赋值运算 符op=,其中,op可以是下面这些运算符之一: