C++基础之表达式笔记

总结C++表达式相关的知识
1、概念
运算对象,表达式,组合运算符和运算对象,运算对象转换,重载运算符左值和右值

  • 左值(lvalue),用作左值时,用的是对象身份(内存中的位置)
  • 右值(rvalue),用作右值时,用的是对象的值(内容)。

不同的运算符对运算对象的要求不同,有的需要左值运算对象,有的需要右值运算对象,返回值也有差异,有的返回左值结果,有的返回右值结果。

1.1、算术运算符
参与取模运算的运算对象必须是整型。
1.2、逻辑和关系运算符
&&, ||短路求值
1.3、赋值运算符
“=”,注意区分相等”==“与赋值
1.4、递增和递减运算符
++,–,注意前后

int i = 1;
int j = i++;//j = 1,i = 2
int k = ++i;//k = 3,i = 3

混用解引用与递增

int iarr[] = {1,2,3,4};
int *ptr = iarr;
int ret = *ptr++ 
//自增优先级高于解引用,即*ptr++ = *(ptr++),
因此ret = 1, ptr =&iarr[1]

1.5、成员访问运算符
点运算符和箭头运算符,都可以用于访问成员
点运算符获取类对象的一个成员
箭头运算符作用与指针类型的运算对象,结果是一个左值。
ptr->mem等价于(*ptr).mem

string str = "hello world",*p = &str;
auto n = str.size();
n = (*p).size(); //解引用运算符优先级低于点运算符
n = p->size();

1.6、条件运算符
(?:)

1.7、位运算符
关于符号为如何处理没有规定,所以强烈建议用为运算符处理无符号类型

1.8、sizeof运算符
返回一条表达式或一个类型名字所占的字节数。

int ival,*p;
sizeof p;//指针所占空间的大小
sizeof *p;//指针所指类型空间的大小。

1.7、逗号运算符

常用于for循环中

2、类型转换
隐式转换
显式转换

你可能感兴趣的:(C++,运算符,表达式,类转换)