1.右值和左值:
右值指的是可以放在“=”右边的值,而左值就是放在左边的。左值要求是必须在内存中有明确的地址才可以被称为左值。
2.i++和++i
i++是先运算完成 ++后,i 的自身已经增加了1,但是对于原值返还的则是增加之前的数,它是右值。
++i是运行完成++后,将运算后的结果返还回来,为左值。
int i=0; j=++i; //j=1 j=i++; //j=0
例题1:
int a, x;
for (a = 0, x = 0; a <= 1 && !x++;a++ )
{
a++;
}
cout << a << x << endl;
结果是21,A&&B的时候,如果A已经不满足情况,则不会看B的部分了。
例题2:
int arr[] = { 6,7,8,9,10 };
auto *ptr = arr;
*(ptr++) += 123;
cout << *ptr << *(++ptr) << endl;
结果是88,cout中是从右向左进行压栈的,所以这样可以从左向右进行输出。
最后的最后附上一个运算优先级的表格: