c++运算符优先级和结合性
所属分类 c
浏览量 865
结合性 运算符
从左到右 :: () [] . -> &
从右到左 ! ++ -- -(负) +(正) (type) * & sizeof new delete
从左到右 * / %
从左到右 +(加) -(减)
从左到右 << >>
从左到右 < <= > >=
从左到右 == !=
从左到右 &
从左到右 ^
从左到右 |
从左到右 &&
从左到右 ||
从右到左 ?:
从右到左 = += -= *= /= %=
从左到右 ,
逗号运算符
从左到右求值,最后一个表达式的值,作为整个表达式的值
b = (a=2,a+1,++a,a+2);
b的值为5
// a=2 b=2
b=(a=1,++a);
// a=2 b=1
b=a=1,++a;
逗号运算符优先级最低
a?b:c?d:e 相当于 a?b:(c?d:e)
% 取余 求模 符号跟被除数一致
short-circuit-evaluation 短路求值
https://gitee.com/dyyx/hellocode/blob/master/web/tech/cpp/demo/op001.cpp
#include "iostream"
using namespace std;
int main(){
// 6
cout << 6%7 << endl;
// -6
cout << -6%7 << endl;
// 6
cout << 6%-7 << endl;
int b,c = 1;
int a=b=c+1;
// 2 2
cout << a << " " << b << endl;
a=1+2+3*4+5*6;
// 45
cout << a << endl;
// 98
cout << (1+'a') << endl;
// -7
cout << (5/3 - 8) << endl;
// 3
cout << (5%3*5/3) << endl;
a=2;
b = 3;
b *=a+1;
// b = b * (a+1)
// 9
a=4>5;
cout << a << endl;
b=(5!=3)==(3>=2);
cout << b << endl;
a=2==3;
b=3;
c=a+3==b;
cout << c << endl;
// 1
cout << sizeof(char) << endl;
// 4
cout << sizeof('A'+1) << endl;
// 8
cout << sizeof(1.0+2) << endl;
b = (a=2,a+1,++a,a+2);
// 3
cout << a << endl;
// 5
cout << b << endl;
// 3
cout << (int)3.3 << endl;
b=(a=1,++a);
// 2
cout << a << endl;
// 2
cout << b << endl;
b=a=1,++a;
// 2
cout << a << endl;
// 1
cout << b << endl;
int arr[3]{100,150,200};
int*p=arr;
cout << (p-a) << endl;
// 100
cout << *p++ << endl;
cout << (p-a) << endl;
// 150
cout << *(p++) << endl;
// 200
cout << (*p)++ << endl;
// 201
cout << *p << endl;
return 0;
}
上一篇
下一篇
c++构造函数
C++ this 指针
c语言中常见的内存错误
编译时指定宏参数
systemctl service chkconfig 之间的关系
Java实现简单的模板