运算符总则:
-
1.整型提升:
2.精度高为准
单目运算符(++,–、强转)>双目(算术运算符>赋值运算符>逗号运算符)*一、自增自减:自己(变量)本身+1或者-1
前置:++a,–a:先自加(减),再运算
后置:a++,a–:先运算,再自加(减)
总结:前置优先级低于后置;前置效率高于后置
运算法则:运算前,数前置;运算后,数后置。二、赋值运算符:=,+=,*=…
1.左值必须是变量。
2.结合性:从右往左
3.右值必须看成一个整体3.逗号运算符:,
由逗号运算符组成的式子,称为逗号表达式。
从左往右依次计算,最后一个式子的值,就是整个表达式的值。4.强转: (类型)
1.把浮点型强转为整型,去掉小数部分。
2.整型强转为字符型,该整型作为ASCII码值对应的字符*
#include <iostream>
using namespace std;
int main()
{
//强转运算符
int num = (int)4.9+4.2;
cout << "num=" << num << endl;//8
//逗号运算符:
int m = 2, n = 3;//逗号间隔符
//逗号表达式:
m = n + 3, m += 4, ++n, m + n;
cout << "m=" << m << ",n=" << n<< endl;//10,4
m = 2, n = 3;//逗号运算符
//把逗号表达式的值赋值给变量m
// ?
m = (n + 3, m += 4, ++n, m + n);
cout << "m=" << m << ",n=" << n << endl;//10,4
//赋值运算符:
int x=2, y=3;
y *= x + 4;//等价于 y=y*(x+4)
cout << "x=" << x << ",y=" << y << endl;//2,18
y += x -= 30;//x=x-30;y=y+x
cout << "x=" << x << ",y=" << y << endl;//-28 -10
x = 2,y = 3;
y += x++;//y=y+x++;
cout << "x=" << x << ",y=" << y << endl;//3,5
y += ++x;//y=y+(++x);
cout << "x=" << x << ",y=" << y << endl;//4,9
++y += x++;//y=++y+x++;
cout << "x=" << x << ",y=" << y << endl;//5,14
//y++ += x++;//编译报错 ++后置的结果为常量,不能作为赋值运算符左值
//自增自减
int a=1, b;
b = a++;//a=2,b=1
cout << "a=" << a << ",b=" << b << endl;
b = ++a;//a=3,b=3
cout << "a=" << a << ",b=" << b << endl;
b =a+++a;//a=4 ,b=6 后置>前置
cout << "a=" << a << ",b=" << b << endl;
b = a++ + (++a) + a++;//a=7 b=15
cout << "a=" << a << ",b=" << b << endl;
return 0;
}