首先,请参考上节课我们提到的运算符总览

今天我们主要讲解下面几个运算符:
()圆括弧运算符

{}组合运算符

::作用域解析

throw运算符

,逗号运算符

()圆括弧运算符

使用示例:

a*(b+c)
(b>=a)&&(c<=a)
(a%(b/c))*d

特点说明:

1 圆括弧拥有优先执行权限。即运算表达式时,优先运算圆括弧内的表达。

2 圆括弧可以嵌套,嵌套时内部的圆括弧拥有更高的优先级。

注意:

由于()作为圆括弧运算符的时候,里面的表达式不可以为空,也不可以有多个语句,所以可以看做是一个单目运算符

虽然可以在其内部使用逗号,但是整个逗号运算表达式最后是作为一个表达式给圆括弧的

使用技巧:

圆括弧通常用来规范表达式的运算优先级,确保表达式按照开发者的预期优先级进行运算。

看过上一篇的同学们应该都有了这种共识:运算符本身的优先级并不可靠!

而圆括弧就是解决这种不可靠的唯一武器!

{}组合运算符

使用示例:

void test()
{int a[]={0,1,2,3};{int a = 0;a++;}
}

特点说明:

1 可以用于函数实体定义、复杂数据类型定义

复杂数据类型包括:联合体、枚举、结构体、类等等

2 可以用户数组内容初始化

包括基本数据类型数组、复杂数据类型数组等等

3 可以构建子作用域

子作用域内部可以重新定义变量,甚至可以无视外部作用域定义的变量

比如示例中,我已经定义了a为数组。但是在子作用域中,我可以再次定义a为整数

在整个子作用域中,a都将作为整数看待,而数组a则在子作用域不可见。

同样的,子作用域定义的整数a,外部也不可见。

再想想第8课,循环语句详解中,for和while后面的{}

其实可以解释为对子作用域进行循环执行。这样看来for(){}其实和for()语句;是等同的

注意:由于组合运算符内部可以为空,也可以有任意多条语句。所以该运算符目数无法确定

使用技巧:

在调试阶段,我们需要一些代码来帮助调试。这个时候我们可以将这些代码放入组合运算符内。这样里面的符号定义就不会影响外部的代码。

避免由于添加了调试代码,引入了新的不可靠因素。

::作用域运解析算符(仅限C++)

使用示例:

std::list<int> lstTmp;
std::cin in;
::全局变量名

特点说明:

1 当引用全局变量的时候符号前面可以不用输入域名。但这并不表明符号是单目,只是隐含了一个全局域而已

2 该符号其实仅仅在编译阶段有用,实际运行的时候不会增加计算机的运算量

使用技巧:

在多个代码模块同时开发的时候,一个比较常见的问题是,大家都碰巧定义同一个变量名、复杂数据名。

如果要修改代码,这又太麻烦了,而且容易引入更多的错误。而这个时候使用作用域就是一个好办法。

关于作用域、名称空间,我们后面会讲到。这里简单说明一下,这些都是为了解决同名的问题而制定的。

这样,我只要注明这个变量或名称来自哪个作用域,就可以解决大家重名的问题。大家开发代码的时候就再也不用担心这个问题了。

throw 运算符(仅限C++)

使用示例:

if(a==0) throw 0;

特点说明:

1 该运算符将会抛出一个异常。有关异常的内容,后面会涉及,这里只是提一下

使用技巧:

1 该运算符可以抛出基本变量类型、自定义变量类型以及对象

2 该运算符必须和catch配合,否则抛出的异常会被系统捕获

,逗号运算符

使用示例:

        int a = 0;a = a + 1, a + 2, a + 3;printf("a= a + 1, a + 2, a + 3 %d\n",a);
<pre name="code" class="cpp">        a = 0;

a = (a + 1, a + 2, a + 3);

 printf("a= (a + 1, a + 2, a + 3) %d\n",a);

特点说明:

1 计算的时候,从左向右计算。注意示例,为什么第一个输出的是1,而后面一个输出的是3?因为赋值运算符的优先级更高!!

2 逗号运算符是一个双目运算,编译器不允许出现a,或者,a这样的情况

使用技巧:

1 可以在while中使用:

 a = 0;while ((a++),a < 3){printf("a=%d\n", a);}

注意这个循环只被执行2次,输出的是a=1 a=2

2 在for的初始化和每次循环的变化条件处理中使用

for(i=0,j=0;i<10;i++,j+=2)

待续……

zerglurker的C语言教程010——运算符详解(二)相关推荐

  1. c 语言中下标运算符,详解C++中二进制求补运算符与下标运算符的用法

    二进制求补运算符:~ 语法 ~ cast-expression 备注 二进制反码运算符 (~)(有时称为"按位反码"运算符)将生成其操作数的按位二进制反码.即,操作数中为 1 的每 ...

  2. c语言左移右移运算符详解

    对于负数的右移:因为负数在内存中是以补码形式存在的,所以首先根据负数的原码求出负数的补码(符号位不变,其余位按照原码取反加1),然后保证符号位不变,其余位向右移动到X位,在移动的过程中,高位补1.等移 ...

  3. python语言入门详解-python初级教程:入门详解

    python初级教程:入门详解 Crifan Li 目录 前言 .................................................................... ...

  4. C语言学习——运算符详解

    C语言学习--运算符详解 一.学习运算符 (1)运算对象的数目 C语言中,运算符的运算对象可以是一个,称单目运算符:运算对象也可以是两个,称双目运算符:运算对象还可以是三个,称三目运算符. (2)运算 ...

  5. 解释一下java的短路运算,Java短路运算符和非短路运算符详解

    Java短路运算符和非短路运算符详解 时间:2017-09-15     来源:互联网 你了解Java短路运算符和非短路运算符吗?短路运算符就是我们常用的"&&". ...

  6. 【C】C语言格式输入函数scanf()详解

    参考了:C语言格式输入函数scanf()详解 总述 scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中. scanf函数的一般形式 scanf函数是一个标准库函数,它 ...

  7. 程序人生 | C语言字节对齐问题详解 - 对齐/字节序/位序/网络序等(上)

    本文首发于 2014-07-21 15:32:28 1. 引言 考虑下面的结构体定义: typedef struct{char c1;short s; char c2; int i; }T_FOO; ...

  8. C语言字节对齐问题详解

    转载原文连接:https://www.cnblogs.com/clover-toeic/p/3853132.html C语言字节对齐问题详解 引言 考虑下面的结构体定义: 1 typedef stru ...

  9. [Dreamweaver教程]Meta标签详解

    [Dreamweaver教程]Meta标签详解 原作者:indian 出处:5D多媒体 发表时间:2004-12-8 关键词: 版权信息:传统媒体及商业网站禁止擅自转载:个人网站转载需经作者同意,并注 ...

  10. c语言菜单选择如何用字符形式,【创客天地】计算机二级C语言、VB考试详解分析...

    原标题:[创客天地]计算机二级C语言.VB考试详解分析 01 马上就要迎来计算机二级考试了,你准备好了吗?今天助手君准备了一点C语言干货,希望对即将考试的你有所帮助.(上期刚刚推了office,有需要 ...

最新文章

  1. python实现http下载文件-Python实现http文件下载
  2. 学点 C 语言(35): 函数 - 递归
  3. IT人员健康信号之大脑保养
  4. 【Linux系统编程应用】 Linux Input子系统(一)
  5. Deploy your UI5 application into SAP Cloud Platform and launch as a tile
  6. 数论六之计算几何干货——计算几何模板解释全集 及 模板检验训练场
  7. python lambda map reduce_简单了解python filter、map、reduce的区别
  8. 【flink】Flink源码编译:Flink1.11+版本编译及部署
  9. LR学习笔记七 之 LR录制sql脚本
  10. 深度图像配准_巧解图像处理经典难题之图像配准
  11. 广州空气质量数据分析
  12. OBJ格式模型详细介绍
  13. 第6期:大学生应该选择哪种主流编程语言
  14. [实战] 图片转素描图
  15. 【Flutter】Dart 数据类型 布尔类型 ( 布尔类型定义 | 逻辑运算 )
  16. 无线华为能连苹果不能连接到服务器,华为网络正常app连不上网络
  17. 拦截召唤神龙云文件,运行本地文件(侵删)
  18. 推荐!非常好用的sql审核平台——Yearning
  19. LINUX------给系统加磁盘
  20. mysql 分区 全局索引_全局分区索引与局部分区索引

热门文章

  1. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)
  2. nginx reopen
  3. android sqlite数据库代码,android sqlite数据库代码
  4. python 开发微信小游戏_教你快速开发一个微信小游戏好友排行榜
  5. 微信公众号主体注册数量提升申请方法
  6. 个人开发者用户福音,轻松申请微信商户、支付宝支付妙招
  7. 数据可视化Matplotlib库
  8. 加速度随机游走_怎么才能形象的说明IMU的bias随机游走?
  9. ODrive0.5.1程序分析#4 闭环控制程序(run_closed_loop_control_loop)
  10. 【学习笔记 31】 buu [0CTF 2016]piapiapia