2.8 自增运算符与自减运算符
Increment and Decrement Operators(递增和递减操作符):
++
: Increment(递增)--
: Decrement(递减)
前缀(prefix)使用与后缀(postfix)使用,有一些差别。
++i;
i++;
前缀,立即自增,其副作用是自增 i
后缀,先用 i 的原始值,稍后再自增 i
如下是在字符串 s 中删除字符 c
void squeeze(char s[], int c)
{
int i,j;
for (i=j=0; s[i] != '\0'; i++)
{
if (s[j] != c)
{
s[j++] = s[i];
}
s[j] = '\0\;
}
}
先拷贝再递增,如下两个写法等价。
if (s[j] != c)
{
s[j++] = s[i];
}
if (s[j] != c)
{
s[j] = s[i];
j++;
}
这里要提到几个术语:
由实现定义的行为 implementation-defined,c标准故意对c语言的部分内容未加指定,并认为其细节可以由“实现”来具体定义。
未定义行为 undefined behavior,其后果是不可预料的,要尽力避免。
副作用 side effect,大多数c语言运算符不会改变操作数的值,但是也有一些会改变。
Last updated
Was this helpful?