找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

C++学习第二弹

admin 2019-2-9 21:21 190人围观 C++相关

作者:轩的杂货铺


C++学习第二弹

  1. 字节数运算符(sizeof)

    字节运算符是一个单目运算符

    作用是求得某种类型或者变量在内存中所占字节数。

    其使用格式如下所示

  sizeof(<类型说明符》)或者sizeof(<变量名>)

这里要提一下,sizeof 是一个较为特殊的运算符,因为sizeof运算符塔多了一对括号,操作数只是函数的参数罢了。这一点特别需要引起注意,sizeof不是函数,它是一个运算符。

接下来的代码将具体展示该运算符的具体使用方法:

sizeof(short)  //返回2

sizeof(int)      //返回4

sizeof(double)//返回8

long ia;

sizeof(ia)//返回4

注:上述返回值是在32位操作系统计算机上得到的结果,计算机系统不同也可能导致得出不同的结果。

2.运算符的优先级和结合性

运算符的优先级和结和性决定了表达式的计算顺序,在学习表达式之前搞清楚运算符的优先级和结合性对于C++学习有着重要意义。

(1)运算符的优先级

C++中有着众多的运算符,如果将它们按照优先级划分的话可以分为15个不同的优先级,如下表所示,且从上至下,运算符的优先级逐次降低:

——C++入门很简单(池剑峰)





对于上表,从优先级上来说,复杂数据类型或者成员具有最高优先级,还有括号也具有最高的优先级,优先级最低的是逗号运算符。在这两个级别之间优先级从高到低依次是:一、二、三、赋值。意思是单目运算符、双目运算符、三目运算符,再是赋值运算。

在双目运算符中多达10钟优先级关系,在这10种级别中,算术运算符高于移位运算符(左移、右移),其次是关系运算符高于逻辑运算符(移位运算符除外)。

(3)赋值运算符具有相同的优先级别。

2.运算符的结合性

在优先级相同的情况下,需要根据结合性来决定表达式的运算顺序。

从前面的图中不难看出,结合性只有两种可能性,一种是从左至右,另外一种就是从右至左。大多数运算符都符合从左向右的结合顺序。单目运算符、三目运算符及赋值运算符这三类运算符从右至左的。

表达式的优先级以及结合性是一个容易出错的地方,比如下面的代码例子:

     int a = 5, b = 2, c;

     c = ( a & b!= 0);

  上述代码首先声明了三个int类型的变量,然后执行""(a&b != 0)", 这句表达式往往容易让人理解成为是这样的代码:

     C = (a & b)!= 0;     //这样的理解是错误的

其原因在于实际上“&”的优先级要比关系运算符!= 的优先级低,所以正确的理解应该如下所示:

c = a & (b != 0);    //正确理解

从上面这个非常简单的例子中我们可以看出,熟悉运算符的优先级其实是很重要的,但这些运算符对于初学着来说确实比较庞大,难以记忆。于是有的人提出并不需要刻意记住这些优先级和结合性的关系,而是只要在不清楚的地方一律加上括号就行了,比如上面的例子加上括号就行了,比如上面的例子加上括号后就变成了:

c = ( (a & b) ! = 0);

首先得承认这是一种较好的编程风格,容易理解。但是,因为这是自己书写的代码,你可以要求自己去做,但是如果去阅读别人的代码呢?那么就不见得好理解了,所以记住那张表还是很有必要的。

3. 算术表达式

     由算术运算符和位操作符组成的表达式都称为算术表达式。其中自增运算符(++)和自减运算符(--)也属于算术运算符。对于混合的算术表达式,不仅仅要注意运算符的优先级,还要注意运算符的结合性。算术运算符的优先级大于按位操作运算符的优先级(除了取反运算符~),它们的结合性都是从左至右。

接下来的例子主要是向大家展示一下算术运算符与位操作符混合计算的表达式,以及多个运算符,敬请期待下期!




-------------------------------------------------------------------------
我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。
-------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......


关于进行手机实名认证的紧急通知!
按照有关部门要求,论坛类网站必须完成手机实名认证才可以进行发帖等操作。希望大家积极配合,为创建一个和谐文明的社区而贡献自己的力量。我们会对会员的隐私进行严格保密,对大家造成的不便深表歉意! 我知道了