原标题:C语言运算符

运算符

在应用程序中,经常会对数据进行运算,为此,C语言提供了多种类型的运算符,即专门用于告诉程序执行特定运算或逻辑操作的符号。根据运算符的作用,可以将 C语言中常见的运算符分为下图中的六大类。

算术运算符

在数学运算中最常见的就是加减乘除四则运算。C语言中的算术运算符就是用来处理四则运算的符号,这是最简单、最常用的运算符号。表 2-11列出了 C语言中的算术运算符及其用法。

算术运算符看上去都比较简单,也很容易理解,但在实际使用时还有很多需要注意的问题,具体如下:

1、进行四则混合运算时,运算顺序遵循数学中“先乘除后加减”的原则。

2、在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。

请仔细阅读下面的代码块,思考运行的结果。

int num1 = 1; int num2 = 2;

int res = num1 + num2++;

printf("num2=%d" + num2);

printf("res=%d" + res);

上面的代码块运行结果为:num2=3,res=3,

具体分析如下:

第一步:运算 mum1+mun2++的结果,此时变量 mun1,mum2的值不变。

第二步:将第一步的运算结果赋值给变量 res,此时 res值为 3。

第三步:mum2进行自增,此时其值为 3。

3、在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有浮点数参与运算,系统会将整数数据隐形类型转换为浮点类型,最终得到的结果会是一个浮点数。

例如, 2510/1000 属于整数之间相除,会忽略小数部分,得到的结果是 2,而 2.5/10 的实际结果为 0.25。

请思考一下下面表达式的结果:

3500/1000*1000

所得结果为3000。由于表达式的执行顺序是从左到右,所以先执行除法运算 3500/1000,得到结果为 3,然后再乘以 1000,最终得到的结果就是 3000。

4、取余运算在程序设计中都有着广泛的应用,例如判断奇偶数的方法就是求一个数字除以 2 的余数是1 还是 0。在进行取余运算时,运算结果的正负取决于被余数(%左边的数)的符号,与余数(%右边的数)的符号无关。

如:(-5)%3=-2,而 5%(-3)=2。

赋值运算符

赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。下表中列举了 C语言中的赋值运算符及其用法。

在这个表中, “ = ” 的作用不是表示相等关系,而是赋值运算符,即将等号右侧的值赋给等号左侧的变量。在赋值运算符的使用中,需要注意以下几个问题:

1、在 C 语言中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:

int x, y, z;

x = y = z = 5; //为三个变量同时赋值

在上述代码中,一条赋值语句可以同时为变量 x、y、z赋值,这是由于赋值运算符的结合性为“从右向左”,即先将 5赋值给变量 z,然后再把变量 z的值赋值给变量 y,最后把变量 y的值赋值变量 x,表达式赋值完成。

需要注意的是,下面的这种写法在 C语言中是不可取的。

intx = y = z = 5;//这样写是错误的

2、在该表中,除了 “ = ”,其他的都是特殊的赋值运算符,接下来以“+=”为例,学习特殊赋值运算符的用法,示例代码如下:

int x=2;

x+=3;

上述代码中,执行代码 x += 3后,x的值为 5。这是因为在表达式 x+=3中的执行过程为:

(1)将 x的值和 3的执行相加。

(2)将相加的结果赋值给变量 x。

所以,表达式 x=+3就相当于 x = x + 3,先进行相加运算,在进行赋值。-=、*=、/=、%=赋值运算符都可依此类推。

多学一招:运算符的结合性

运算符的结合性指同一优先级的运算符在表达式中操作的结合方向,即当一个运算对象两侧运算符的优先级别相同时,运算对象与运算符的结合顺序。大多数运算符结合方向是“自左至右”。示代码如下:

a-b+c;

上述代码中表达式 a- b + c,b两侧有-和+两种运算符的优先级相同,按先左后右的结合方向, b先与减号结合,执行 a- b的运算,然后再执行加 c的运算。除了自左至右的结合性外, C语言还有三类运算符,它们分别是单目运算符、条件运算符和赋值运算符。以赋值运算符为例,具体代码如下所示:

责任编辑:

c语言 运算符的作用,C语言运算符相关推荐

  1. c语言算术运算的作用,C语言算术运算符和算术表达式

    C语言算术运算符和算术表达式 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.下面和大家分享一些C语言算术运算符和算术表达式,一起来看看吧! 一. 基本的算术运算符 (1)+(加法运算 ...

  2. -%3e运算符在c语言中的作用,C语言逻辑运算符知识整理

    在高中数学中,我们学过逻辑运算,例如p为真命题,q就假命题,那么"p且q"为假,"p或q"为真,"非q"为真. 在C语言中,也有类似的逻辑运 ...

  3. c语言record的作用,C语言基础 record 2-指针,结构体,链表,文件的输入输出

    指针: 1.指针的概念: 内存区的每一个字节有一个编号,这就是 '地址',由于通过地址能找到所需的变量单元,而地址指向该变量单元,所以将地址形象化称为 '指针'.C/C++中是可多继承的指针,而Jav ...

  4. c语言fun的作用,c语言fun函数有什么作用

    c语言fun函数有什么作用 c语言fun函数的作用是被主函数所调用,来定义一个函数或方法,这样在引用时可以用fun表示,比如[int fun(int x,int y)]. c语言fun函数的作用是: ...

  5. C语言文件缓冲区作用,C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲...

    //文件结构体FILE的理解以及缓冲区再讲 #include #include //要点:文件结构 //struct _iobuf { // char *_ptr; ------当前缓冲区内容指针 / ...

  6. %2d在c语言中什么作用,C语言中的 %2d是什么意思

    修饰符格式说明.意义M%md以宽度m输出整型数,不足m时,左补空格0m%0md以宽度m输出整型数,不足m时,左补零m,n%m.nf以宽度m输出实型小数,小数位为n位例如:设i=123,a=12.345 ...

  7. c语言 const常量作用,C语言 const常量讲解

    //const的本质 //const本质上是伪常量,无法用于数组初始化以及全局变量初始化 //原因在于const仅仅限定变量无法直接赋值,但是却可以通过指针间接赋值 //例如局部常量在栈区,而不在静态 ...

  8. c语言中逻辑非运算符的作用,C语言中逻辑运算符非!与或||的优先级怎么说?...

    逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:!(非)→&&(与)→||(或)记忆口诀:not(非)and(与)or(或)运算规则1)&&:当且仅当两个运算量的值都为 ...

  9. c语言中下标运算符的作用,C语言下标运算符([])

    借助于下标运算符 [](subscript operator),可以获取数组中单独的元素.下标运算符需要两个操作数.在最简单的情况下,一个操作数是一个数组名称,而另一个操作数是一个整数. 在下面的示例 ...

最新文章

  1. ajax传值的url,JQuery ajax url传值与data传值的区别
  2. 深度丨走向人工智能时代,百度的延承和蜕变
  3. pgsql中忘记密码通过如下方式解决
  4. mysql5.7.20+初始化_MySQL5.7.28 初始化数据库
  5. 计算机的主存储器可以分为哪两类,2017年计算机应用基础模拟试题「答案」(2)...
  6. ​可扩展的公有云媒体服务设计解析
  7. java门槛_Java的入行门槛高吗?对学历有限制吗?
  8. java swarm集群_52个Java程序员不可或缺的 Docker 工具
  9. mybatis case when_MyBatis 几种通用的写法
  10. HTML5 Geolocation用来定位用户的位置。
  11. 关于主函数main(int argc,char *argv[])
  12. ECSHOP商城网站建设之自定义调用广告方法(二)
  13. 测试Live Write的发布功能
  14. k210 hc-05 智慧课堂 人脸识别签到
  15. 代理记账和专职会计哪个更适合企业?
  16. springboot学习笔记(三)使用JDBC以及整合spring data jpa
  17. pycharm如何打开历史_如何在pycharm中反转控制台历史顺序以进行复制粘贴?
  18. UESTC 1635 最大最小生成树
  19. Pytorch深度学习(五):加载数据集以及mini-batch的使用
  20. mysql 根据身份证号码更新性别

热门文章

  1. 逻辑与和逻辑或的执行顺序
  2. 水立方是高级场馆,人立方同样
  3. STATA学习笔记:数据合并
  4. 最全ASCII对应码表-键值
  5. 一个完整的项目管理流程包括什么?项目管理者必看
  6. ISO26262-6 2018第七章: Software architectural design
  7. 操作系统实验二:物理内存管理系统
  8. dvwa详解_DVWA(六):XSS-Reflected 反射型XSS全等级详解
  9. 我的世界基岩版种子和java版种子_我的世界:两个基岩版“神种”,55米高的前哨站,裸露的村庄要塞...
  10. python docx 合并文档 图片_MBT文档模型化生成工具——30倍效率文档撰写工程化方法...