美文网首页
[进阶]C++:算数运算

[进阶]C++:算数运算

作者: 离群土拨鼠 | 来源:发表于2019-03-23 11:34 被阅读0次

左值和右值

  • 理解这两个意思对后面的内容非常重要。C++的表达式不是左值,就是右值。在C++中可以归纳为:当一个对象被用作右值时,用的是它的对象的值(内容),当对象被用作左值时,用的是对象的身份(内存中的位置)。

  • 重要的原则是,在需要右值的地方我们可以用左值代替,但是不能把右值当成左值(位置)使用。
  • 赋值运算需要一个左值作为左侧运算对象,得到的结果仍然是一个左值。
  • 取地址符作用在一个左值运算对象上返回一个指向该对象的指针,这个指针是一个右值。
  • 内置解引用运算符,下标运算符,迭代解引用符string和vector的下标运算的求值结果都是左值。
  • 内置类型和迭代器的增减符作用于左值对象,得到的还是左值。

decltype 和引用

  • decltype返回表达式的类型,却不计算他们的值。
  • 有些表达式将向decltype返回一个赋值语句的左值,这也一意味着表达式的结果对象可以当作一条赋值语句的左值。
int a = 0, &cj = a,*p=&a;
decltype(a) x = 0;//int
decltype(cj + 0) y = 3;//int,cj是引用
decltype(cj) y = x;//int&,cj是引用
decltype(*p) y = x;//int&,p是指针
decltype(p) y = &x;//int*,p是指针
decltype(p+0) y = &x;//int*,p是指针
decltype(p[0]) y = x; //int&,p是指针
decltype(p[0]+0) y = a;//int,p是指针!!
decltype(&p) y = &p;//int**,p是指针!!

算数运算符

算术运算符
  • 运算符%俗称取余,或取模,参与取余的运算对象必须是整型
int ival=42;
double dval=3.14;
ival%12;//正确,结果是6
ival%dval;//错误,运算对象是浮点型
  • 当m,n都为整型时:

  • (-m)/n和m/(-n)都等于-(m/n)
  • m%(-n)等于m%n
  • (-m)%n等于-(m%n)

参考:C++primer 第五版

相关文章

  • 第三章 数据处理(4)c++算数运算符

    (四)c++算数运算符 1.算数运算符 c++一共有五种基本的算数运算符,+, -, *, /, %分别是加减乘...

  • [进阶]C++:算数运算

    左值和右值 理解这两个意思对后面的内容非常重要。C++的表达式不是左值,就是右值。在C++中可以归纳为:当一个对象...

  • C++运算符重载

    首先什么是运算符,顾名思义,运算符就是用于运算,操作运算数的符号,常见的比如算术中的加减乘除符号,C++支持的运算...

  • JavaScript快速入门03-运算符

    JS的运算符 算数运算符 算数运算符用于对数值进行算数运算 运算符描述说明+加法运算-减法运算*乘法运算/除法运算...

  • Swift--运算符

    算数运算符 关系运算符 逻辑运算符 位运算符 其他运算符 算数运算符 算数运算符有 一元运算符、 二元运算符、 算...

  • MySQL运算符

    算数运算符,比较运算符,逻辑运算符,位运算符 算数运算符: + - * / % 比较运算符: =, <>, !=...

  • C语言 运算符与表达式

    ###算数运算符:‘+’,‘-‘,’*‘,’/',’%(取余)‘,’+(正号)‘,’-(负号)‘ 算数运算符:%是...

  • JS常用运算符

    Get Started 算数运算符string运算 比较运算符void逗号运算符运算顺序 逻辑运算符 算数运算符 ...

  • 算数运算符

    算数运算符 通过算数运算符可以完成基本的加减乘除取余的运算操作 算数运算符有哪些 求和 相减 乘积/ 相除++ 自...

  • sqlite(6)-运算符

    算数运算符 比较运算符 逻辑运算符 位运算符 SQLite算数运算符## 实例## sqlite> .mode l...

网友评论

      本文标题:[进阶]C++:算数运算

      本文链接:https://www.haomeiwen.com/subject/wyijvqtx.html