C语言增一减一运算符
int n=3;
m=n++;
m=++n;
虽然n值都进行了加一操作,但变量m的值却是不同的,前者是将n=3赋给m,然后n+1=4,后者是n+1=4后在赋值给m。
同理执行下面两条语句:
printf("%d\n",n++);
printf("%d\n",++n);
打印的结果也不一样;
语句 | 等价的句子 | 执行后的m的值 | 执行句子后n的值 |
m=n++ |
m=n; n=n+1; | 3 | 4 |
m=n-- |
m=n; n=n-1; | 3 | 2 |
m=++n |
n=n+1; m=n; | 4 | 4 |
m=--n |
n=n-1; m=n; | 2 | 2 |
例:
m=-n++;
一元运算符,自右向左计算,
此语句等价:m=-n++;
m=-(n++);
m=-n;
n=n+1;
不等价:m=(-n)++;//错误,不能对表达式进行自加自减;