Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
数据类型 ( Data Type ) <ul><li>数据为什么要区分类型? </li></ul><ul><li>不同类型的数据代表不同的 </li></ul><ul><ul><li>数据表示形式 </li></ul></ul><ul><ul>...
数据类型概述 字符类型 char 整型 int 、 long 、 short 基本类型 实型 单精度型 float 浮点型 双精度型 double 数据类型 枚举类型 enum 数组类型 [ ] 构造类型 结构体类型 struct 共用体类型 ...
例 2.1 :一个简单的 C 程序例子  <ul><li>#include <stdio.h> </li></ul><ul><li>/* 函数功能 : 计算两个整数相加之和 </li></ul><ul><li>入口参数 : 整型数据 a 和 b...
C 程序常见符号分类  <ul><li>关键字( Keyword )  </li></ul><ul><ul><li>又称为保留字, C 语言中预先规定的具有固定含义的一些单词 </li></ul></ul><ul><ul><li>数据类型修饰符...
C 程序常见符号分类  <ul><li>其它符号  </li></ul><ul><ul><li>大花括号 “ { ” 和 “ } ” 通常用于标识函数体或者一个语句块  </li></ul></ul><ul><ul><li>“ /* ” 和 “...
标识符命名  <ul><li>变量名 </li></ul><ul><li>函数名 </li></ul><ul><li>由英文字母、数字和下划线组成,大小写敏感 </li></ul><ul><li>不可以是数字开头 </li></ul><ul><...
标识符命名  <ul><li>不允许使用关键字作为标识符的名字   </li></ul><ul><ul><li>int, float, for, while, if 等 </li></ul></ul><ul><li>某些功能的变量采用习惯命名 ...
b, B, KB, MB, GB, TB <ul><li>如何衡量数据类型所占空间大小? </li></ul><ul><li>bit ,中文叫法:位 </li></ul><ul><li>Byte ,中文叫法:字节 </li></ul><ul><...
b, B, KB, MB, GB, TB 1 TB  ==   1,024 GB 1 GB   ==   1,024 MB 1 MB   ==   1,024 KB 1 KB   ==   1,024 B 1 B  ==   8 b
b, B, KB, MB, GB, TB <ul><li>一个位有多大? </li></ul><ul><ul><li>只能是 “ 0 ” 或者 “ 1 ” ,这叫二进制 </li></ul></ul><ul><li>一个字节有多大? </li>...
整数类型 <ul><li>表示形式 </li></ul><ul><ul><li>十进制形式:与数学上的整数表示相同。 </li></ul></ul><ul><ul><ul><li>例如: 12 , -100 , 0 </li></ul></ul...
整数类型 <ul><li>分类 </li></ul><ul><ul><li>根据数据所占的二进制位数分为 : int 、 short 、 long ;同样存储长度的数据又分 unsigned 、 signed ; 故可组合出六种类型。 </li...
何谓类型溢出 ( Overflow )? <ul><li>C 语言直接提供的任何类型都有取值范围。当向其赋超过此范围的数值,就会产生数值溢出,得到一个不正确的结果。 </li></ul><ul><li>TC2 中 int 的范围是 -32768...
何谓类型溢出 ( Overflow )? <ul><li>生活中的例子: </li></ul><ul><ul><li>身份证号码中的出生年 </li></ul></ul><ul><ul><li>阿利亚娜号火箭发射失败 </li></ul></u...
类型溢出的解决方案 ? <ul><li>解决方案: </li></ul><ul><ul><li>预先估算运算结果的可能范围,采用取值范围更大的类型。 </li></ul></ul><ul><ul><ul><li>1+2+3+ … </li></...
实数类型 <ul><li>表示形式 </li></ul><ul><ul><li>十进制小数形式:由数字和小数点组成。 </li></ul></ul><ul><ul><ul><li>例如: 3.4 , 4.0 , 0.3 </li></ul></...
字符类型 <ul><li>表示形式 </li></ul><ul><ul><li>用单引号括起来的一个字符,占 1 个字节。 </li></ul></ul><ul><ul><ul><li>如: ’ A ’ 、 ’ 1 ’ 、 ’ ? ’ </li...
字符类型 <ul><ul><li>字符串: 是用一对双引号括起来的字符序列。 </li></ul></ul><ul><ul><ul><li>如: “ SHANGHAI ” , “ AbcdeFGHijk ” , “ How are you ” ...
常量与符号常量 <ul><li>常量:是指在程序运行中,其数值不能被改变的量。 </li></ul><ul><ul><li>直接常量 </li></ul></ul><ul><ul><li>符号常量 </li></ul></ul>数值常量 整型常...
直接常量 <ul><li>请判断下列常量正确与否。 </li></ul><ul><ul><li>整型常量 </li></ul></ul><ul><ul><li>120  、 -100 、 0 、 0 120 、 0 72 、 0x FFFF 、...
符号常量 <ul><li>含义:用标识符定义一个常量。 </li></ul><ul><ul><li>一旦某个标识符被定义成为一个常量后,以后在程序处理时,该标识符都代表对应的常量值。 </li></ul></ul><ul><li>定义格式: #...
变量 <ul><li>含义:是指以标识符为名字,其值可以改变的量。  </li></ul><ul><li>作用:变量代表计算机内存中的某一存储空间,该存储空间中存放的数据就是变量的值。 </li></ul>
变量定义 <ul><li>定义形式: 类型标识符   变量名 1 [, 变量名 2, 变量名 3] ;   </li></ul><ul><ul><li>int a,b,c;  int a;  int b;  int c; </li></ul...
变量赋值 <ul><li>变量的赋值 </li></ul><ul><ul><li>变量定义后只是按照类型分配了所需的存储空间,但是没有具体的值。 </li></ul></ul><ul><ul><li>变量初始化 :第一次给变量赋值的过程,这个值...
运算符与表达式 <ul><li>运算符 </li></ul><ul><li>表达式: 由操作数和运算符组成的序列。   </li></ul>算术运算符: +  -  *  /  % 关系运算符: >  <  ==  >=  <=  != 逻辑运...
算术运算符 <ul><li>+ 、 - 、 * 、 / 、 % (求余):双目运算符 </li></ul><ul><ul><li>5%3=_____ , 6.2%3=_____ </li></ul></ul><ul><ul><li>% 运算左右...
算术表达式 <ul><li>定义:用算术运算符和括号将运算对象(也称操作数,包括常量、变量、函数等)连接起来。 </li></ul><ul><li>运算符的优先级: ( )  * 、 / 、 %  + 、 - </li></ul><ul><...
float a=2.0; int b=6,c=3; a*b/c-1.5 +’a’+ fabs (-5) 12.0 /3 5 4.0  - 1.5 2.5  + 97(int) 99.5  +  5 104.5 (double) double  ...
自增、自减运算符 * <ul><li>自增运算符: ++ </li></ul><ul><li>自减运算符: -- </li></ul><ul><ul><li>单目运算符,作用是使变量的值加 1 或减 1 。 </li></ul></ul><ul...
赋值运算符和赋值表达式 <ul><li>赋值运算符 = :将一个数据赋给一个变量。 </li></ul><ul><li>赋值表达式: < 变量名 > < 赋值运算符 > < 表达式 > </li></ul><ul><ul><li>其中 < 表达...
复合赋值运算符和复合赋值表达式 <ul><li>复合赋值运算符构成:在赋值运算符 “ = ” 之前加上其他运算符,可以构成复合赋值运算符。 </li></ul><ul><ul><li>x+=5;     x=x+5; </li></ul><...
关系运算符和关系表达式 <ul><li>关系运算符 </li></ul><ul><ul><li>> ,大于 </li></ul></ul><ul><ul><li>< ,小于 </li></ul></ul><ul><ul><li>>= ,大于等于...
逻辑运算符和逻辑表达式 <ul><li>逻辑运算符 </li></ul><ul><ul><li>! ,非、单目运算符 </li></ul></ul><ul><ul><li>&& ,与 </li></ul></ul><ul><ul><li>|| ...
逗号运算符和逗号表达式 <ul><li>一般形式:表达式 1, 表达式 2 </li></ul><ul><ul><li>int x,y=5; </li></ul></ul><ul><ul><li>x=(y=y+6,y=y/3); </li></...
条件运算符和条件表达式 <ul><li>一般形式: < 表达式 1> ? < 表达式 2> : < 表达式 3> </li></ul><ul><ul><li>int x=3,y=5,z; </li></ul></ul><ul><ul><li>z...
求字节运算符 <ul><li>一般形式 </li></ul><ul><ul><li>sizeof( 变量名 ) :返回变量的字节长度 </li></ul></ul><ul><ul><li>sizeof( 类型名 ) :返回类型的字节长度 </l...
数据类型转换 <ul><li>自动转换 </li></ul><ul><li>强制类型转换:将一个表达式转换为指定类型。 </li></ul><ul><li>( 类型名 ) ( 表达式 ) </li></ul><ul><li>int  x=6,y...
数据类型转换 <ul><li>赋值转换 </li></ul><ul><ul><li>整型数据赋值给单、双精度变量,数值不变,但以浮点数形式存储。 </li></ul></ul><ul><ul><li>实型数据赋值给整型变量,舍弃实数小数部分。 ...
Próxima SlideShare
Cargando en…5
×

C 02 c语言的基本数据类型与表达式

478 visualizaciones

Publicado el

课件

Publicado en: Educación
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

C 02 c语言的基本数据类型与表达式

  1. 1.
  2. 2.
  3. 3. 数据类型 ( Data Type ) <ul><li>数据为什么要区分类型? </li></ul><ul><li>不同类型的数据代表不同的 </li></ul><ul><ul><li>数据表示形式 </li></ul></ul><ul><ul><li>合法的取值范围 </li></ul></ul><ul><ul><li>占用内存空间大小 </li></ul></ul><ul><ul><li>可参与的运算种类 </li></ul></ul>
  4. 4. 数据类型概述 字符类型 char 整型 int 、 long 、 short 基本类型 实型 单精度型 float 浮点型 双精度型 double 数据类型 枚举类型 enum 数组类型 [ ] 构造类型 结构体类型 struct 共用体类型 union 指针类型 * 空类型 vodi
  5. 5. 例 2.1 :一个简单的 C 程序例子 <ul><li>#include <stdio.h> </li></ul><ul><li>/* 函数功能 : 计算两个整数相加之和 </li></ul><ul><li>入口参数 : 整型数据 a 和 b </li></ul><ul><li>返回值: 整型数 a 和 b 之和 */ </li></ul><ul><li>int Add(int a, int b) </li></ul><ul><li>{ return (a + b); </li></ul><ul><li>} </li></ul><ul><li>/* 主函数 */ </li></ul><ul><li>main() </li></ul><ul><li>{ int x, y, sum = 0; </li></ul><ul><li>printf(&quot;Input two integers:&quot;); </li></ul><ul><li>scanf(&quot;%d%d&quot;, &x, &y); /* 输入两个整型数 x 和 y*/ </li></ul><ul><li>sum = Add(x, y); /* 调用函数 Add 计算 x 和 y 相加之和 */ </li></ul><ul><li>printf(&quot;sum = %dn&quot;, sum); /* 输出 x 和 y 相加之和 */ </li></ul><ul><li>} </li></ul>并列的两个函数 其中一个是 程序的入口 程序注释
  6. 6. C 程序常见符号分类 <ul><li>关键字( Keyword ) </li></ul><ul><ul><li>又称为保留字, C 语言中预先规定的具有固定含义的一些单词 </li></ul></ul><ul><ul><li>数据类型修饰符 int, 控制语句 return 等 </li></ul></ul><ul><li>标识符( Identifier ) </li></ul><ul><ul><li>系统预定义标识符, main,printf 等 </li></ul></ul><ul><ul><li>用户自定义标识符, Add, x, y 等 </li></ul></ul><ul><li>运算符( Operator ) </li></ul><ul><ul><li>34 种,详见附录 2 </li></ul></ul><ul><li>分隔符( Separator ) </li></ul><ul><ul><li>空格、回车 / 换行、逗号等 </li></ul></ul>
  7. 7. C 程序常见符号分类 <ul><li>其它符号 </li></ul><ul><ul><li>大花括号 “ { ” 和 “ } ” 通常用于标识函数体或者一个语句块 </li></ul></ul><ul><ul><li>“ /* ” 和 “ */ ” 是程序注释所需的定界符 </li></ul></ul><ul><li>数据( Data ) </li></ul><ul><ul><li>变量( Variable ) </li></ul></ul><ul><ul><li>常量( Constant ) </li></ul></ul>
  8. 8. 标识符命名 <ul><li>变量名 </li></ul><ul><li>函数名 </li></ul><ul><li>由英文字母、数字和下划线组成,大小写敏感 </li></ul><ul><li>不可以是数字开头 </li></ul><ul><li>直观,见名知意,便于记忆和阅读 </li></ul><ul><ul><li>最好使用英文单词或其组合 </li></ul></ul><ul><ul><li>切忌使用汉语拼音 </li></ul></ul><ul><li>下划线和大小写通常用来增强可读性 </li></ul><ul><ul><li>variablename </li></ul></ul><ul><ul><li>variable_name </li></ul></ul><ul><ul><li>variableName </li></ul></ul>Windows 风格 UNIX 风格
  9. 9. 标识符命名 <ul><li>不允许使用关键字作为标识符的名字 </li></ul><ul><ul><li>int, float, for, while, if 等 </li></ul></ul><ul><li>某些功能的变量采用习惯命名 </li></ul><ul><ul><li>如: for 语句所采用的循环变量习惯用 i, j, k </li></ul></ul>
  10. 10. b, B, KB, MB, GB, TB <ul><li>如何衡量数据类型所占空间大小? </li></ul><ul><li>bit ,中文叫法:位 </li></ul><ul><li>Byte ,中文叫法:字节 </li></ul><ul><li>Kilobyte(KB) ,中文叫法: K </li></ul><ul><li>Megabyte(MB) ,中文叫法:兆 </li></ul><ul><li>Gigabyte(GB) ,中文叫法: G </li></ul><ul><li>Terabyte(TB) ,中文叫法: T </li></ul>
  11. 11. b, B, KB, MB, GB, TB 1 TB == 1,024 GB 1 GB == 1,024 MB 1 MB == 1,024 KB 1 KB == 1,024 B 1 B == 8 b
  12. 12. b, B, KB, MB, GB, TB <ul><li>一个位有多大? </li></ul><ul><ul><li>只能是 “ 0 ” 或者 “ 1 ” ,这叫二进制 </li></ul></ul><ul><li>一个字节有多大? </li></ul><ul><ul><li>保存一个字符(英文字母、数字、符号) </li></ul></ul><ul><ul><ul><li>ASCII (美国标准信息交换码)编码 </li></ul></ul></ul><ul><ul><ul><li>见 P427 附录 D ,常用字符与 ASCII 码对照表 </li></ul></ul></ul><ul><ul><li>两个字节保存一个汉字 </li></ul></ul><ul><ul><ul><li>GB 编码 </li></ul></ul></ul><ul><ul><li>可以表示 0~255 之间的整数 </li></ul></ul>
  13. 13. 整数类型 <ul><li>表示形式 </li></ul><ul><ul><li>十进制形式:与数学上的整数表示相同。 </li></ul></ul><ul><ul><ul><li>例如: 12 , -100 , 0 </li></ul></ul></ul><ul><ul><li>八进制形式:以数字 0 开头的整数。 </li></ul></ul><ul><ul><ul><li>例如: 0 12=1*8 1 +2*8 0 =10 ( 十进制) </li></ul></ul></ul><ul><ul><li>十六进制形式:以 0x 开头的整数 。 </li></ul></ul><ul><ul><ul><li>例如: 0x 12=1*16 1 +2*16 0 =18 ( 十进制) </li></ul></ul></ul><ul><li>八进制的数码范围为 0~7 。 </li></ul><ul><ul><li>如: 0 18 </li></ul></ul><ul><li>十六进制的数码除了数字 0~9 外,还使用英文字母 a~f (或 A~F )表示 10~15 。 </li></ul><ul><ul><li>如: 0x 1e </li></ul></ul>注意! × √
  14. 14. 整数类型 <ul><li>分类 </li></ul><ul><ul><li>根据数据所占的二进制位数分为 : int 、 short 、 long ;同样存储长度的数据又分 unsigned 、 signed ; 故可组合出六种类型。 </li></ul></ul><ul><li>值域 : 由机器中数据的存储长度决定。 </li></ul><ul><ul><li>Turbo C 中: short ( 2 字节)≤ int ( 2 字节)≤ long ( 4 字节) </li></ul></ul>关键字 所占位数 取值范围 short 16 -32768 ~ 32767 unsigned short 16 0 ~ 65535 int 16 -32768 ~ 32767 unsigned int 16 0 ~ 65535 long 32 -2147483648 ~ 2147483647 unsigned long 32 0 ~ 4294967295
  15. 15. 何谓类型溢出 ( Overflow )? <ul><li>C 语言直接提供的任何类型都有取值范围。当向其赋超过此范围的数值,就会产生数值溢出,得到一个不正确的结果。 </li></ul><ul><li>TC2 中 int 的范围是 -32768~32767 </li></ul><ul><ul><li>如果超出取值范围,给它一个小于 -32768 或者大于 32767 的数会如何呢?现场编程测验 …… </li></ul></ul>小蛇能吞下大象吗? typeoverflow.c
  16. 16. 何谓类型溢出 ( Overflow )? <ul><li>生活中的例子: </li></ul><ul><ul><li>身份证号码中的出生年 </li></ul></ul><ul><ul><li>阿利亚娜号火箭发射失败 </li></ul></ul><ul><li>现象与危害: </li></ul><ul><ul><li>溢出后的数值是可预料的,但不同平台会有所不同。当程序从高位计算机向低位计算机移植(比如从 64 位系统移植到 32 位系统)时,以前从不出现的溢出问题可能出现。 </li></ul></ul>
  17. 17. 类型溢出的解决方案 ? <ul><li>解决方案: </li></ul><ul><ul><li>预先估算运算结果的可能范围,采用取值范围更大的类型。 </li></ul></ul><ul><ul><ul><li>1+2+3+ … </li></ul></ul></ul><ul><ul><ul><li>1!+2!+3!+ … </li></ul></ul></ul><ul><ul><ul><li>1 3 +2 3 +3 3 + … </li></ul></ul></ul><ul><ul><li>如果不需要处理负数,则采用无符号类型。 </li></ul></ul><ul><ul><li>在运算还没开始之前就判断运算数是否在合理的取值范围内。如果超出,则停止运算,转错误处理。 </li></ul></ul>
  18. 18. 实数类型 <ul><li>表示形式 </li></ul><ul><ul><li>十进制小数形式:由数字和小数点组成。 </li></ul></ul><ul><ul><ul><li>例如: 3.4 , 4.0 , 0.3 </li></ul></ul></ul><ul><ul><li>指数形式: “ 十进制小数 ” + “ e( 或 E ) ” + “ 十进制数整数 ” </li></ul></ul><ul><ul><ul><li>例如: 12.5e-6 表示 12.5×10 -6 </li></ul></ul></ul><ul><ul><ul><li>小数点不能单独出现; 0. √ .0 √ .  </li></ul></ul></ul><ul><ul><ul><li>e 或 E 的两边必须有数,且其后面必须为整数。 6E0.2  e5  </li></ul></ul></ul><ul><li>分类 </li></ul>关键字 字节数 取值范围 精度(位) float 4 3.4×10 -38 ~ 3.4×10 38 7 double 8 1.7×10 -308 ~ 1.7×10 308 15
  19. 19. 字符类型 <ul><li>表示形式 </li></ul><ul><ul><li>用单引号括起来的一个字符,占 1 个字节。 </li></ul></ul><ul><ul><ul><li>如: ’ A ’ 、 ’ 1 ’ 、 ’ ? ’ </li></ul></ul></ul><ul><ul><li>用单引号括起来的由反斜杠( )引导的转义字符。 </li></ul></ul>字符形式 功能 字符形式 功能 n 换行 ’ 单引号字符 b 退格 t 横向跳格(跳到下一个输出区) r 回车 v 竖向跳格 f 走纸换页 ddd 1 到 3 位八进制数所代表的字符 反斜杠字符 xhh 1 到 2 位十六进制所代表的字符
  20. 20. 字符类型 <ul><ul><li>字符串: 是用一对双引号括起来的字符序列。 </li></ul></ul><ul><ul><ul><li>如: “ SHANGHAI ” , “ AbcdeFGHijk ” , “ How are you ” </li></ul></ul></ul><ul><li>字符型数据类型的标识符为 char ; </li></ul><ul><li>字符型数据在内存中占 1 个字节; </li></ul><ul><li>字符 ASCII 码值为 0 ~ 127 ,共 128 个 。 </li></ul>注意 <ul><li>‘ ‘‘ √ ‘‘ √ ‘‘‘  ‘‘  </li></ul><ul><li>‘ a‘ 与” a” 的区别。 </li></ul>
  21. 21. 常量与符号常量 <ul><li>常量:是指在程序运行中,其数值不能被改变的量。 </li></ul><ul><ul><li>直接常量 </li></ul></ul><ul><ul><li>符号常量 </li></ul></ul>数值常量 整型常量 直接常量 实型常量 字符型常量 字符常量 字符串常量 符号常量 标识符定义
  22. 22. 直接常量 <ul><li>请判断下列常量正确与否。 </li></ul><ul><ul><li>整型常量 </li></ul></ul><ul><ul><li>120 、 -100 、 0 、 0 120 、 0 72 、 0x FFFF 、 0x 1e 、 0x 28AF 、 0x ED4 、 120 L 、 200 L 、 0 99 、 12f 、 0x g 、 48EA </li></ul></ul><ul><ul><li>实型常量 </li></ul></ul><ul><ul><li>3.14 、 -3.1 、 5.12 E-6 、 019.5 、 1e-08 、 2.1 E10.2 、 E-6 、 6.4E 、 4.8E9 </li></ul></ul><ul><ul><li>字符型常量 </li></ul></ul><ul><ul><li>'a' 、 '#' 、 ' n' 、 ' 101 ' 、 '' changsha '' 、 ' ' 、 ' p ' 、 ' ’ ' 、 ' ab ' 、 '' +++?ab '' </li></ul></ul>
  23. 23. 符号常量 <ul><li>含义:用标识符定义一个常量。 </li></ul><ul><ul><li>一旦某个标识符被定义成为一个常量后,以后在程序处理时,该标识符都代表对应的常量值。 </li></ul></ul><ul><li>定义格式: #define 标识符 常量数据 </li></ul><ul><ul><li>#define MAX 1000 </li></ul></ul><ul><ul><li>#define MIX 10 </li></ul></ul><ul><ul><li>#define PI 3.1415926 </li></ul></ul>
  24. 24. 变量 <ul><li>含义:是指以标识符为名字,其值可以改变的量。 </li></ul><ul><li>作用:变量代表计算机内存中的某一存储空间,该存储空间中存放的数据就是变量的值。 </li></ul>
  25. 25. 变量定义 <ul><li>定义形式: 类型标识符 变量名 1 [, 变量名 2, 变量名 3] ; </li></ul><ul><ul><li>int a,b,c;  int a; int b; int c; </li></ul></ul><ul><ul><li>float m,n; </li></ul></ul><ul><ul><li>char s,t; </li></ul></ul>变量定义是语句,分号不能缺少 自行确定,符合标识符命名原则,见名知意 如 int 、 char 、 float 等 <ul><li>在 C 语言程序中,变量必须“先定义,后使用”。 </li></ul><ul><li>变量定义主要是指出变量的名字,确定变量的数据类型。 </li></ul><ul><li>在同一个程序段中,变量不能被重复定义。 </li></ul>注意!
  26. 26. 变量赋值 <ul><li>变量的赋值 </li></ul><ul><ul><li>变量定义后只是按照类型分配了所需的存储空间,但是没有具体的值。 </li></ul></ul><ul><ul><li>变量初始化 :第一次给变量赋值的过程,这个值称为变量的初值。 </li></ul></ul><ul><ul><li>变量先定义再赋初值 </li></ul></ul><ul><ul><ul><li>int a,b,c; </li></ul></ul></ul><ul><ul><ul><li>a=2; b=5; c=12; </li></ul></ul></ul><ul><ul><li>变量定义的同时赋初值 </li></ul></ul><ul><ul><ul><li>int a=2,b=5,c=12; </li></ul></ul></ul><ul><ul><li>变量初始化后可以再次赋值(即修改变量的值),但是一个变量任何时刻只能有一个值。 </li></ul></ul><ul><ul><ul><li>int a=5; a=12; </li></ul></ul></ul>int a,b,c; a=b=c=3; int a=b=c=3; 变量定义的同时不能连续初始化赋值
  27. 27. 运算符与表达式 <ul><li>运算符 </li></ul><ul><li>表达式: 由操作数和运算符组成的序列。 </li></ul>算术运算符: + - * / % 关系运算符: > < == >= <= != 逻辑运算符:! && ‖ 位运算符: << >> ~ | ∧ & 赋值运算符: = 条件运算符: ? : 逗号运算符: , 指针运算符: * & 求字节数运算符: sizeof 强制类型转换运算符 分量运算符: • -> 下标运算符: [ ]
  28. 28. 算术运算符 <ul><li>+ 、 - 、 * 、 / 、 % (求余):双目运算符 </li></ul><ul><ul><li>5%3=_____ , 6.2%3=_____ </li></ul></ul><ul><ul><li>% 运算左右两数必须为整型数据。 </li></ul></ul><ul><ul><li>5/3=_____ </li></ul></ul><ul><ul><li>两个整数相除,结果自动取整(向零取整)。 </li></ul></ul><ul><ul><li>x 为 double 型, y 为 int 型,则 x+y 的类型的为 _____ 。 </li></ul></ul><ul><ul><li>参加运算的两个数中有一个数为实数,则结果为 double 型。 </li></ul></ul><ul><ul><li>6+ ’ A ’ =_____ </li></ul></ul><ul><ul><li>字符型数据可以和数值型数据混合运算。 </li></ul></ul>
  29. 29. 算术表达式 <ul><li>定义:用算术运算符和括号将运算对象(也称操作数,包括常量、变量、函数等)连接起来。 </li></ul><ul><li>运算符的优先级: ( )  * 、 / 、 %  + 、 - </li></ul><ul><li>运算符的结合性:左结合性,即从左至右 </li></ul><ul><li>类型转换:如果运算符两侧的数据类型不一致,先自动进行类型转换,然后再进行计算。 </li></ul><ul><li>- :取负值运算符 </li></ul><ul><ul><li>一元运算符 </li></ul></ul><ul><ul><li>优先级高于算术运算符 </li></ul></ul>int a=8,b=6,c=5,y; y= - a - b*c+a/c; 则 y=_____ -37
  30. 30. float a=2.0; int b=6,c=3; a*b/c-1.5 +’a’+ fabs (-5) 12.0 /3 5 4.0 - 1.5 2.5 + 97(int) 99.5 + 5 104.5 (double) double float long unsigned int char,short
  31. 31. 自增、自减运算符 * <ul><li>自增运算符: ++ </li></ul><ul><li>自减运算符: -- </li></ul><ul><ul><li>单目运算符,作用是使变量的值加 1 或减 1 。 </li></ul></ul><ul><ul><li>操作对象只能是变量且该变量有值。 </li></ul></ul><ul><ul><li>++i , --i (在使用 i 之前, i 值先加(减) 1 ) </li></ul></ul><ul><ul><li>i++ , i-- (在使用 i 之后, i 值再加(减) 1 ) </li></ul></ul>int x=3,y; y= x++ ; 则 y=_____ int x=3,y; y= ++x ; 则 y=_____ 3 4 int x=3,y; y=-x++; 则 y=________________ -(x++) 右结合性 (-x)++
  32. 32. 赋值运算符和赋值表达式 <ul><li>赋值运算符 = :将一个数据赋给一个变量。 </li></ul><ul><li>赋值表达式: < 变量名 > < 赋值运算符 > < 表达式 > </li></ul><ul><ul><li>其中 < 表达式 > 可以是一个常量、一个变量或者一个表达式。 </li></ul></ul><ul><ul><ul><ul><li>int a,b=5,m=7,n=8; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>a=3; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>a=b; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>a=m+n; </li></ul></ul></ul></ul><ul><ul><li>优先级:赋值运算符优先级低于算术运算符、关系运算符和逻辑运算符。 </li></ul></ul><ul><ul><li>结合性: 右 结合性 </li></ul></ul>
  33. 33. 复合赋值运算符和复合赋值表达式 <ul><li>复合赋值运算符构成:在赋值运算符 “ = ” 之前加上其他运算符,可以构成复合赋值运算符。 </li></ul><ul><ul><li>x+=5;  x=x+5; </li></ul></ul><ul><ul><li>x*=y+8;  </li></ul></ul><ul><ul><li>x%=3;  </li></ul></ul><ul><ul><li>x-=y;  </li></ul></ul><ul><li>复合赋值表达式 </li></ul><ul><li>< 变量名 > < 复合赋值运算符 > < 表达式 > </li></ul><ul><ul><li>已知 a 的初值为 12 ,则 a+=a-=a*a 的结果为 _____ 。 </li></ul></ul>x=x* ( y+8 ) ; x=x%3; x=x-y; -264
  34. 34. 关系运算符和关系表达式 <ul><li>关系运算符 </li></ul><ul><ul><li>> ,大于 </li></ul></ul><ul><ul><li>< ,小于 </li></ul></ul><ul><ul><li>>= ,大于等于 </li></ul></ul><ul><ul><li><= ,小于等于 </li></ul></ul><ul><ul><li>== ,等于 </li></ul></ul><ul><ul><li>!= ,不等于 </li></ul></ul><ul><li>关系表达式:用关系运算符连接的表达式。 </li></ul><ul><li>优先级 </li></ul><ul><ul><li>> 、 < 、 >= 、 <= </li></ul></ul><ul><ul><li>== 、 != </li></ul></ul><ul><li>结合性:左结合性 </li></ul><ul><li>表达式的值 </li></ul><ul><ul><li>结果为真,值为 1 </li></ul></ul><ul><ul><li>结果为假,值为 0 </li></ul></ul>算术运算符高于关系运算符
  35. 35. 逻辑运算符和逻辑表达式 <ul><li>逻辑运算符 </li></ul><ul><ul><li>! ,非、单目运算符 </li></ul></ul><ul><ul><li>&& ,与 </li></ul></ul><ul><ul><li>|| ,或 </li></ul></ul><ul><li>逻辑表达式:用逻辑运算符连接的表达式。 </li></ul><ul><li>优先级 </li></ul><ul><ul><li>! </li></ul></ul><ul><ul><li>&& </li></ul></ul><ul><ul><li>|| </li></ul></ul><ul><li>结合性:左结合性 </li></ul><ul><li>表达式的值 </li></ul><ul><ul><li>结果为真,值为 1 </li></ul></ul><ul><ul><li>结果为假,值为 0 </li></ul></ul>! 高 算术运算符 关系运算符 && 和 || 赋值运算符 低
  36. 36. 逗号运算符和逗号表达式 <ul><li>一般形式:表达式 1, 表达式 2 </li></ul><ul><ul><li>int x,y=5; </li></ul></ul><ul><ul><li>x=(y=y+6,y=y/3); </li></ul></ul><ul><ul><li>则 x 的值为 _____ 。 </li></ul></ul><ul><li>求解过程 </li></ul><ul><ul><li>先求解表达式 1 的值,再求解表达式 2 的值。 </li></ul></ul><ul><ul><li>整个逗号表达式的值是表达式 2 的值。 </li></ul></ul><ul><li>扩展形式:表达式 1, 表达式 2, … , 表达式 n </li></ul>3
  37. 37. 条件运算符和条件表达式 <ul><li>一般形式: < 表达式 1> ? < 表达式 2> : < 表达式 3> </li></ul><ul><ul><li>int x=3,y=5,z; </li></ul></ul><ul><ul><li>z=x>y ? 100 : 200; </li></ul></ul><ul><ul><li>则 z 的值为 _____ </li></ul></ul><ul><li>运算顺序 </li></ul><ul><ul><li>先求解表达式 1 的值 </li></ul></ul><ul><ul><li>如果表达式 1 的值为真,则求解表达式 2 的值并把它作为整个表达式的值。 </li></ul></ul><ul><ul><li>如果表达式 1 的值为假,则求解表达式 3 的值并把它作为整个表达式的值。 </li></ul></ul>200
  38. 38. 求字节运算符 <ul><li>一般形式 </li></ul><ul><ul><li>sizeof( 变量名 ) :返回变量的字节长度 </li></ul></ul><ul><ul><li>sizeof( 类型名 ) :返回类型的字节长度 </li></ul></ul><ul><ul><li>int x=5; </li></ul></ul><ul><ul><li>y=sizeof( x ); </li></ul></ul><ul><ul><li>则 y 的值为 _____ 。 </li></ul></ul><ul><ul><li>z=sizeof( int ); </li></ul></ul><ul><ul><li>则 z 的值为 _____ 。 </li></ul></ul>2 2
  39. 39. 数据类型转换 <ul><li>自动转换 </li></ul><ul><li>强制类型转换:将一个表达式转换为指定类型。 </li></ul><ul><li>( 类型名 ) ( 表达式 ) </li></ul><ul><li>int x=6,y=4; </li></ul><ul><li>则 x/y=_____ </li></ul><ul><li>int x=6,y=4; </li></ul><ul><li>则 ( float ) (x/y)=__________ </li></ul><ul><li>int x=6,y=4; </li></ul><ul><li>则 ( float ) x/y=__________ </li></ul>1 1.000000 1.500000 double float long unsigned int char,short
  40. 40. 数据类型转换 <ul><li>赋值转换 </li></ul><ul><ul><li>整型数据赋值给单、双精度变量,数值不变,但以浮点数形式存储。 </li></ul></ul><ul><ul><li>实型数据赋值给整型变量,舍弃实数小数部分。 </li></ul></ul><ul><ul><li>字符型数据赋值给整型变量,字符数据放入到整型变量低 8 位中,整型变量高 8 位补 0 或补 1 。 </li></ul></ul><ul><ul><li>整型数据 (int) 赋值给 long int 型变量,进行符号扩展, long int 型变量高 16 位补 0 或补 1 。 </li></ul></ul><ul><ul><li>无符号整型数据 (unsigned int) 赋值给 long int 型变量, long int 型变量高 16 位补 0 。 </li></ul></ul>

×