运算符优先级和继承问题
运算符优先级顺口溜:单算一笔,俺裸三服(才单算了一笔账,我就脱了三件衣服)
1单:单目运算符;
2算:算数运算符;加、减、乘、除、取余
3一:移位运算符;左移、右移
4笔:比较运算符; 等于【==】、不等于【!=】 、关系运算符【< > <= >= 】
5俺:按位运算符;按位与(&),按位或(|)、按位非(~)、按位异或(^)
6裸:逻辑运算符;与【&&】 、或【||】、非【!】
7三:三目运算符;b ? x : y,先计算b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值
8服:赋值运算符。赋值运算符【= += -= *= /= %= >>= <<= &= |= ^=】
为什么不是21212121
#include
using namespace std;
class A{
public:
long a;
};
class B : public A {
public:
long b;
};
void seta(A* data, int idx) {
data[idx].a = 2;
}
int main(int argc, char *argv[]) {
B data[4];
for(int i=0; i<4; ++i){
data[i].a = 1;
data[i].b = 1;
seta(data, i);
}
for(int i=0; i<4; ++i){
std::cout << data[i].a << data[i].b;
}
return 0;
}
1单:单目运算符;
2算:算数运算符;加、减、乘、除、取余
3一:移位运算符;左移、右移
4笔:比较运算符; 等于【==】、不等于【!=】 、关系运算符【< > <= >= 】
5俺:按位运算符;按位与(&),按位或(|)、按位非(~)、按位异或(^)
6裸:逻辑运算符;与【&&】 、或【||】、非【!】
7三:三目运算符;b ? x : y,先计算b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值
8服:赋值运算符。赋值运算符【= += -= *= /= %= >>= <<= &= |= ^=】
为什么不是21212121
#include
using namespace std;
class A{
public:
long a;
};
class B : public A {
public:
long b;
};
void seta(A* data, int idx) {
data[idx].a = 2;
}
int main(int argc, char *argv[]) {
B data[4];
for(int i=0; i<4; ++i){
data[i].a = 1;
data[i].b = 1;
seta(data, i);
}
for(int i=0; i<4; ++i){
std::cout << data[i].a << data[i].b;
}
return 0;
}
全部评论
相关推荐
点赞 评论 收藏
分享
09-29 20:47
天津大学仁爱学院 BSP工程师 国家一级保护废物_:末9现状:吃着学历的红利n笔个位数面0offer。不理解某些企业卡学历尤其是卡第一学历的行为,还是人太多了😅
点赞 评论 收藏
分享