06

类型的自动转换和强制转换

当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。转换优先级为:char < int < float < double 即左边级别“低“的类型向右边转换。

具体地说,若在表达式中优先级最高的数据是double型,则此表达式中的其他数据均被转换成double型,且计算结果也是double型;若在表达式中优先级最高的数据是float型,则此表达式中的其他数据均被转换成float型,且计算结果也是float型。

在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换;当右边的类型高于左边的类型时,则在转换时对右边的数据进行截取。

除自动转换外,还有强制转换,表示形式是:( 类型 )(表达式);

例:(int)(a b)

讨论:当a值赋值为3.4,b值赋值为2.7,(int)(a b)和(int)a b的值分别为多少?

07

C运算符认识

C语言的运算符范围很广,可分为以下几类:

  • 1、算术运算符:用于各类数值运算。包括加( )、减(-)、乘(*)、除(/)、求余(%)、自增( )、自减(--)共七种。

  • 2、赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值( =,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。<="" span="">

  • 3、逗号运算符:用于把若干表达式组合成一个表达式(,)。

  • 4、关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、>=)、小于等于(<=)和不等于(!=)六种。<="" span="">

  • 5、逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。

  • 6、条件运算符:这是一个三目运算符,用于条件求值(?:)。

  • 7、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

  • 8、指针运算符:用于取内容(*)和取地址(&)二种运算。

  • 9、求字节数运算符:用于计算数据类型所占的字节数(sizeof)。

  • 10、特殊运算符:有括号(),下标[],成员(→,.)等几种。

另外,按参与运算的对象个数,C语言运算符可分为:单目运算符 (如 !)、双目运算符 (如 ,- )和三目运算符 (如 ? :)。

08

算术运算符和算术表达式

8.1 基本的算数运算符

(1) (加法运算符或正值运算符,如2 5)。

(2)-(减法运算符或负值运算符,如4-2)。

(3)*(乘法运算符,如3*8)。

(4)/(除法运算符,如11/5)。

/的运算分为两种情况:

a、“除”的左右两边都为整数时,所得结果必然是整数(注意:仅取整数部分,不是四舍五入)比如:5/2的值为2,不是2.5,1/2的值为0。

b、“除”的左右两边至少有一个是实型数据(即小数)时,所得结果为实型数据。比如:5/2.0的值为2.5,7.0/2.0的值为3.5.

(5)%(模运算符或称求余运算符,%两侧均应为整型数据,如9%7的值为2)。

需要说明的是:当运算对象为负数时,所得结果随编译器不同而不同,在vc中,结果的符号与被除数相同,比如:13%-2值为1,而-15%2值为-1。

8.2 算术表达式和运算符的优先级与结合性

算术表达式是用算术运算符和括号将运算量(也称操作数)连接起来的、符合C语言语法规则的表达式。运算对象包括函数、常量和变量等。

在计算机语言中,算术表达式的求值规律与数学中的四则运算的规律类似,其运算规则和要求如下。

  • (1)在算术表达式中,可使用多层圆括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算各表达式的值。

  • (2)在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向进行运算。

  • (3)如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,使两者具有相同类型,然后进行运算。

8.3 自增自减运算符

作用:使变量的值增1或减1。

如: i,--i (在使用i之前,先使i的值加1、减1)。i ,i-- (在使用i之后,使i的值加1、减1)。

(1)只有变量才能用自增运算符 ( )和自减运算符(--),而常量或表达式不能用,如10 或(x y) 都是不合法的。

(2) 和--的结合方向是“自右向左“,如 -i ,i的左边是负号运算符,右边是自增运算符,负号运算和自增运算都是 “自右向左“结合的,相当于 -(i )。

在循环语句中常用到自增(减)运算符,在指针中也常用到该运算符,考生要弄清楚“i ”和“ i”及“i--”和“--i”的区别,特别弄清楚表达式的值和变量的值。

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

初学者宝典:C语言入门基础知识大全(下)相关推荐

  1. C语言基础知识入门和C语言入门基础知识大全

    一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...

  2. 初学者宝典:C语言入门基础知识大全(中)

    04 常量 在程序运行中,其值不能被改变的量称为常量.常量有5种类型:整型常量.实型常量.字符常量.字符串常量和符号常量. 4.1 数值转换 - 数值的四种表现形式: ①:二进制:所有数字由0,1构成 ...

  3. c语言 二进制输出_推荐收藏!C语言入门基础知识大全

    01C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成.格式.以及良好的书写风格,使小伙伴对c语言有个初步认识. 例1:计算两个整数之和的c程序: #include main() {i ...

  4. c语言 二进制输出_收藏!C语言入门基础知识大全

    C语言中的逻辑值只有两个:真(true)和假(flase).用非零代表真,用零代表假.因此,对于任意一个表达式,如果它的值为零,就代表一个假值,如果它的值为非零,就代表一个真值.只要值不是零,不管是正 ...

  5. C语言入门基础知识有哪些?

    众所周知C语言经久不衰,并且很多人都想要成为C语言工程师,为了能够做好C语言技术学习,需要知晓C语言入门基础知识有哪些. 用一个简单的C程序例子,介绍C语言的基本构成.格式.以及良好的书写风格,使小伙 ...

  6. 计算机入门基础知识大全

    ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后 ...

  7. C语言入门-基础知识

    良好习惯之规范 在写C语言程序的时候为了书写清晰.便于阅读.便于理解.便于维护,在编写程序时应遵循以下规则: 1.一个说明或一个语句占一行,例如:包含头文件.一个可执行语句结束都需要换行: 2.函数体 ...

  8. C语言入门基础知识【完整版】

    目录 一.数据类型和表达式 1.基本类型 2.构造类型 1)数组类型 2)[结构体类型](#jiegou) 3)[共用体类型](#lianhe) 3.常量 4.运算表达式 1)算术运算表达式: 2)关 ...

  9. HTML超文本标记语言入门基础知识

    文章目录 基本概念 HTML 标签 注释 转义符号 HTML文档基本结构 HTML中常用标签 标签分类 常用的布局组合标签 一. 文本标签 二. 图片标签 三. 列表标签 四. 定义描述标签及布局标签 ...

最新文章

  1. Android开发学习笔记:对话框浅析
  2. VSMFC程序显示命令行窗口
  3. 信息系统项目管理知识--项目沟通管理
  4. boost::mp11::mp_max相关用法的测试程序
  5. pycharm/clion/idea等产品多含代码左移右移操作
  6. linux特殊权限之访问权限
  7. bootstraptable 怎么在特定行添加数据_同等权限下多任职之间数据权限的实例
  8. 深度学习中所有的优化器的详细介绍与列表化对比分析
  9. 手把手教你使用R语言做竞争风险模型并绘制列线图
  10. 并行计算——冯·诺依曼结构
  11. GraphPad Prism 中文版 科研绘图工具
  12. Vue2.0 响应式原理 通俗易懂
  13. 概率论与数理统计学习笔记——第二十一讲——二元连续型随机变量条件概率密度
  14. JZOJ-senior-3502. 【NOIP2013模拟11.4B组】方格游戏
  15. selenium学习指南
  16. HTTPS 到底加密了什么?
  17. Eclipse+WIN7+CC2538移植开发Contiki
  18. 再探 set/map
  19. 我对汉诺塔问题的理解
  20. 某鱼APP x-sign x-mini-wua x-sgext 分析成果

热门文章

  1. 教程:测试期间的日志记录
  2. spring aop实践_使用Spring AOP实现活动记录模式
  3. java递归基础掉用_Java递归基础
  4. 带有JAX-RS和PrimeFaces的RESTful图表
  5. Java 8备忘单中的可选
  6. Yammer Metrics,一种监视应用程序的新方法
  7. Java枚举益智游戏
  8. 从CLI监视OpenJDK
  9. Spring陷阱:事务测试被认为是有害的
  10. Java 7:项目代币中的代码示例