1. 概念变量和文字常量都有存储区,并且有相关的类型,区分在于变量是可寻址的;
对于每个变量,都有 2 个值与其相关联:
1> 数据值,存储在某个内存地址中,也称右值〔 rvalue 〕,右值是被读取的值〔 read value 〕,文字常量和变量都可被
用于右值。
2> 地址值,即存储数据值的那块内存地址,也称左值〔 lvalue 〕,文字常量不能被用作左值。
2 . 问题给表达式加上括号:
++a--
结果 ++(a--)
这个表达式是非法的,由于前增量操作要求一个可修改的左值,而 “ a--“ 不是左值〔即右值〕
3 . 前增量和后增量的区分
早期的 c 语言教材, for 循环语句通常写成:
for(int i=0;i<10;i++)
而现在多为:
for(int i=0;i<10;++i) 两者有区分吗?
a++ 即是返回 a 的值,然后变量 a 加 1 ,返回需要产生一个临时变量类似于
{ int temp = a; a=a+1;
return temp; // 返回右值 }
++a 那么为:
{ a=a+1;
return &a; // 返回左值 }
明显,前增量不需要中间变量,效率更高。
具体说下 ;
计算下:
int i=1; System.out.println((i++)+(i++)+(i++)+(++i)+(i++)
+(++i)); 计算步骤具体说下