> 判断表达式的长度并不需要对表达式进行求值,所以sizeof(a=b+1)并没有向a赋值。
测试代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 0, b = 0;
printf("运算前:%d, %d\n", a, b);
printf("%d \n", sizeof(a = b + 1));
printf("运算后:%d, %d\n", a, b);
return 0;
}

> 增值操作符++和减值操作符--
这个操作符实际上只要求操作数必须是一个“左值”。
抽象地说,前缀和后缀形式的增值操作符都赋值一份变量值的拷贝,用于周围表达式的值正是这份拷贝,前缀操作符在进行复制之前增加变量的值,后缀操作符在进行复制之后才增加变量的值。
这些操作符的结果不是被它们所修改的变量,而是变量值的拷贝,认识到这一点非常重要。
++a = 10;
++a的结果是a的拷贝,并不是变量本身,你无法向一个值进行赋值。
测试代码:(test_add_pre.c)
#include <stdio.h>
int main()
{
int a = 1;
int b = 0;
++ a = 10;
return 0;
}
