版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.1 C的数据类型3.2 常量与变量3.3 整型数据3.4 实型数据3.5 字符型数据3.6 变量赋初值3.7 各类数值型数据间的混合运算3.8 算术运算符和算术表达式3.9 赋值运算符和赋值表达式C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院一个程序应包括以下两方面内容:(1) 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。(2) 对操作的描述。即操作步骤,也就是算法(algorithm)。数据是操作的对象,操作的目的是对数
2、据进行加工处理,以得到期望的结果。打个比方,厨师做菜肴,需要有菜谱。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例1 #define price 30 int main ( ) int num; float total; num=100; total=num * price/1000; printf(total=%d thousands,total); return 0; C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院 C C语言程序设计(语言程
3、序设计(公共基础)信息与电气工程学院信息与电气工程学院3.1标识符定义:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。标识符的构成规则:(不能使用关键字,区别大小写) l以字母(大小写均可)或下划线开头 l随后可跟若干个(包括0个)字母、数字、下划数 l标识符的长度各个系统不同,建议不要超过8个C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院定义:也称为保留字,在C语言中具有特定含义,专门用作C语言特定成分的标示符,关键字不能作为 用户标示符。 voidcharshortint longfloatdoublesignedunsigne
4、dstructunionenumtypedefautostaticexternconstregisterreturnifelseswitchcasedefaultdowhileforbreakcontinuegotosizeofvolatileinlinerestrict_Bool_Complex_ImaginaryC C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院课堂练习1. 在C语言中,下列标示符中合法的是(A) A _int B 3in1-3 C A_B!D D voidC C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院课堂练习
5、2. 下列选项中,均是合法标示符的选项(C) A _a void zhangsan B 5.2 5.2 include C _888 fun _INT D -12 const 2*aC C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.2 常量与变量3.2.1 常量和符号常量:定义:在程序运行过程中,其值不能被改变的量称为常量。常量类型(根据数据类型):如 12,0,-3为整型常量, 4.6,-1.23为实型常量, a,d为字符常量。常量类型(根据表现形式):字面常量或直接常量:一般从其字面形式即可判别。 符号常量:用一个标识符代表一个常量。格式: #define
6、 符号常量 常量 #define price 30C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院赋值问题:在程序运行过程中,其值不能被改变,也不能再被赋值。例如: 再用以下赋值语句给price赋值是错误的。 price=40;写法:习惯上,符号常量名用大写,变量用小写,以示区别。好处:见名知意,一改全改 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例2 符号常量的使用 #define PI 3.14159 /*定义符号常量PI,其值为3.14159*/ #include int main( ) /*按照小数格式输出2*PI*
7、1的值*/ printf (半径是1的圆的周长是:%fn, 2*PI*1); printf (半径是1的圆的面积是:%fn, PI*1*1); /*按照小数格式输出PI*1*1的值*/ return 0; C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.2.2 变量: 定义:在程序运行过程中,其值可以改变的量称为变量。说明:一个变量应该有一个名字,变量名实际上是一个符号地址,,即在对程序编译连接时由系统在内存中给每个变量名分配一个存储单元。在该存储单元中存放变量的值。变量名 vs. 变量值 (见图3.1)。在程序中从变量中取值,实际上是通过变量名找到相应的内
8、存地址,从其存储单元中读取数据。用“标识符”标识变量名图图3.13.1C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院变量要先定义,后使用 一般定义格式: 数据类型 变量名1 ,变量名2,变量名n;(1)int num; num=100;(2)int num =100; (3)int a,b,c=5;表示指定a、b、c为整型变量,只对c初始化,c的值为5。 决定分配字节数存储变量名必须为合法标识符C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例3 定义一个变量#include int main( )int a; /* 定义变量a
9、 */printf (%dn,a); /* 按照整型的格式输出a的值 */return 0;思考:1. 分析输出结果2. 可否去掉 int a; ?C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例4 定义两个变量#include int main( ) int a, b; /* 定义变量a */ printf (“%d, %dn”,a,b); /* 按照整型的格式分别 输出a和b的值 */ return 0; 思考:printf可以改为其它格式吗? C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院变量赋值原则:先定义后赋值。格式
10、: 变量 = 常量(也可以是变量、表达式等) ;功能:将赋值运算符右端的值复制一份传递给左端的变量。要求赋值符号左端必须是变量。 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例5:变量赋值#include int main( )int a; /* 定义变量a */a = 3; /* 将3赋值给a */printf (%d,a); /* 按照整型的格式输出a的值 */return 0;思考:在printf语句前面加上a=5; 结果如何?C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院变量初始化定义:在定义变量的同时给它赋值,称为
11、变量初始化。格式:数据类型 变量 = 常量(也可以是变量、表达式等) ;等价于:数据类型 变量;变量 = 常量(也可以是变量、表达式等) ; C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例7:变量初始化#include int main( ) int a = 3; /* 定义变量a ,同时将a初始化为3*/ printf (%d,a); /* 按照整型的格式输出a的值 */ return 0; 思考:在printf语句前面加上int a=5; 结果如何? C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例8:变量初始化和赋值#
12、include int main( ) int a, b = 2; /* 定义变量a和b ,将b初始化为2*/ int c; /* 定义变量c */ a = c = 1; /* 将1赋值给变量a和c */ printf (“%d, %d, %d ”,a,b,c); /* 按照整型的格式分别输出a、b和c的值 */ return 0; 思考:若将变量a和b都初始化为2,应如何写?C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例9:变量初始化和赋值#include int main( ) int a, b = 2; /* 定义变量a和b ,将b初始化为2*/ in
13、t c; /* 定义变量c */ scanf (“%d,%d,%d”,&a, &b, &c); /* 从键盘输入值给变量a,b和c 中*/ printf (“%d,%d,%d ”,a, b, c); /* 按照整型的格式分别输出a、b和c的值 */ return 0; 思考:若将变量a和b都初始化为3,应如何输入?C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院/* 注释 */ #include /* 输入输出函数在此声明 */ #include /* 其他函数声明所在 */ int main( ) 变量定义语句; /* 例如 int a
14、, b, c;*/ 输入语句; /* 例如 a = 2; b = 1; */ 运算处理语句; /* 例如 c = a+b; */ 输出语句; /* 例如 printf (“c = %d/n”, c); */ return 0; 注意:变量定义语句要放在所在函数中其他语句的前面C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院#include int main( )printf(%dn,a);return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院#include int main( )int a;int b;a = b =
15、 10;printf(a,bn,a,b);return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院#include int main( )int a;int b;a = b = 10;printf( a=%d,b=%dn ,a,b);return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院#include int main( )int a;int b;a = b = 10;printf( a=%d,b=%dn ,a,b);return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气
16、工程学院#include int main( ) int a=10,b; b = a; printf( a=%d,b=%dn ,a,b); return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院#include int main( )int a,b;a = b = 10;printf(a=%d,b=%dn,a,b);return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院#include int main( ) int a; a = 10; int b = a; printf( a=%d,b=%dn ,a,b
17、); return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院#include int main( ) a = 3,b = 5; c= a*b printf(“The product:,c); return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.3 整型数据3.3.1 3.3.1 整型常量(也称整数)整型常量(也称整数)可用以下三种形式表示:可用以下三种形式表示:(1) (1) 十进制整数十进制整数。(2) (2) 八进制整数:八进制整数:以以0 0开头的数是八进制数。开头的数是八进制数。例如:例如:0
18、1230123表示八进制数表示八进制数123123,即,即(123)(123)8 8, 其值为:其值为:1 18 82 2+2+28 81 1+3+38 80 0,等于十进制数,等于十进制数8 38 3。 -011-011表示八进制数表示八进制数-11-11,即十进制数,即十进制数-9-9。(3) (3) 十六进制整数:十六进制整数:以以0 x0 x开头的数是十六进制数。开头的数是十六进制数。例如:例如: 0 x1230 x123,代表十六进制数,代表十六进制数123123, 其值为:其值为: (123)16=1(123)16=116162 2+2+216161 1+3+316160 0=25
19、6+32+3=291=256+32+3=291。 -0 x12 -0 x12等于十进制数等于十进制数-18-18。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院 (4)(4)整型常量的后缀整型常量的后缀a) a) 长整型数用后缀长整型数用后缀“L”L”或或“l”l”表示表示例如:例如:158L 158L 、012L 012L 、0X15L 0X15L 均为常整型数均为常整型数b) b) 无符号整型常数用后缀无符号整型常数用后缀“U”U”或或“u”u”表示表示例如:例如:358u 358u 、 0 x3au 0 x3au 、 235Lu 235Lu 均为无符号数
20、均为无符号数C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.3.2 整型变量1. 存放形式:(i)数据在内存中是以二进制形式存放的;(TC系统为每一个整型变量在内存中分配2个字节,而VC6.0分配4个字节。) 例如:int a=3; /* 定义a为整型变量 */ a=3; /* 给a赋以整数3 */ 十进制数3的二进制形式为011。在整数的32位中,最左面的一位是表示符号的,该位为0,表示数值为正;为1则数值为负。图a:数据存放的示意图图b:数据在内存中实际存放的情况C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院(ii)内存
21、大小: C标准没有具体规定以上各类数据所占内存字节数,只要求long型数据长度不短于int型,short型不长于int型。具体如何实现,由各计算机系统的字长决定: long在16和32位操作系统中都是32位. short在16和32位操作系统中都是16位. 16位操作系统(DOS, Windows 3.x)int是16位的. 32位操作系统(Windows 9x/NT/2000/XP) int是 32位的.C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院2、整型变量的取值范围 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院(i)
22、数值表示方式数值是以补码(complement) 表示的一个正数的补码和其原码的形式相同。求负数的补码的方法是:将该数的绝对值的二进制形式,按位取反再加1。例如: a = -3;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院整型变量的取值范围 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院int类型:取值范围-2147483648 - 2147483647 C C语言
23、程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例10:整型变量的溢出输出:输出:C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3、分类:可以根据数值的范围:(1) 基本整型,以int表示。(2) 短整型, 以short int表示,或以short表示。(3) 长整型, 以long int表示,或以long表示。为了充分利用变量的表数范围,此时可以将变量定义为“无符号”类型。对以上三种都可以加上修饰符unsigned,以指定是“无符号数” 。如果既不指定为signed,也不指定为unsigned,则隐含为有符号(signed)。C C语言
24、程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.4 实型数据 3.4.1 实型常量的表示方法实数(real number)又称浮点数(floating-point number)。实数有两种表示形式:(1)十进制小数形式:由数字和小数点组成(注意必须有小数点)。 例如: .123、 123.、 123.0、 0.0都是十进制小数形式。(2) 指数形式:字母e(或e)之前必须有数字,且e后面的指数必须为整数。 例如:123e3代表123103 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院不合法的指数形式的实数:345 (无小数点)E7
25、 (阶码标志E之前无数字)53-E3 (负号位置不对)2.7E (无阶码)2.1e3.5 (阶码不是整数)C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院注意:(1)规范化的指数形式: 即在字母e(或e)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。 例如:123.456 : 123.456e0 、 12.3456e1 、 1.23456e2、 0.123456e3、 0.0123456e4、 0.00123456e5 (2)一个实数在用指数形式输出时,是按规范化的指数形式输出的。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信
26、息与电气工程学院3)实型常量默认是双精度(double),有效位数是1516位。4)如要指定它为单精度(float),可以加后缀“f”或“F”,如 3.6f ,有效位数为67位。5)如要指定它为长双精度(long double),可以加后缀“l”或“L”,有效位数为1819位。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院1. 实型数据在内存中的存放形 式 一个实型数据在内存中占4个字 节(32位)实型数据是按照指数形式存储的。 系统把一个实型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。实数 3.14159 在内存中的存放形式可以用图3
27、.7示意。3.4.2 实型变量实型变量图图3.7C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院2. 实型变量的分类C实型变量分为单精度(float型)、双精度(double型)和长双精度型(long double)三类。ANSI C 并未具体规定每种类型数据的长度、精度和数值范围。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院实型数据取值范围C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3. 实型变量定义的格式和书写规则与整型相 同。例如:float x,y; /*x,y为单精度实型量*/do
28、uble a,b,c; /* a,b,c为双精度实型量*/C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例11 实型数据的精度 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院 由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去。由此可能会产生一些误差。 例如,(a20) 应该比a大?C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院 例12 实型数据的舍入误差。int main() float a,b; a = 123456,789e5; b = a
29、+ 20 ; printf(%f,a); printf(%f,b); 注意:程序运行时,输出b的值与a相等。原因是:一个实型变量只能保证的有效数字是7位有效数字,后面的数字无意义C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院 例13 实型数据的输入输出。int main() float a,b; scanf(“%f,%f”,&a, &b); /* 按照实型的格式输入两个值,分别存入变量a,b中 */ printf(“%.2f,%.3f”,a,b); ); /* 按照实型的格式输出变量a,b的值,分别保留2和3位小数 */ return 0; C
30、 C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.5 字符数据3.5.1 字符常量C的字符常量是用单引号(即撇号)括起来的一个字符。如a,x,d,?, 等都是字符常量。 注意,a和A是不同的字符常量。 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院特殊形式的字符常量转义字符: 以“”开头的字符,含有特定的 意义,这是一种“控制字符”,不能在屏幕上 显示出来。例如,n,代表一个“换行”符。 常用转义字符,见表25。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院 C C语言程序设计(语言程序设计(公
31、共基础)信息与电气工程学院信息与电气工程学院3.5.2 字符变量字符型变量用来存放字符常量,请注意只能放一个字符。字符变量的定义和赋值形式如下: char c1, c2;c1 = a;c2 = b;一个字符变量在内存中占一个字节,实际并不是将字符直接存储在内存中,而是存储的该字符的ASCII码值。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院存储形式:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。例如:字符a的ASCII代码为97,b为98,在内存中变量c1、c2的值如图3.8(a
32、)、图3.8(b)所示。实际上是以二进制形式存放的。图图3.8C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院字符型数据取值范围C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例13 字符的输出#include int main( )char ch = a; /* 定义字符变量ch并初始化*/printf (“ch: %dn”,ch); /* 按照整型的格式输出ch中 存储的字符的ASCII值*/printf (“ch: %cn”,ch); /* 按照
33、字符的格式输出ch中存储的字符 */return 0;思考:若将char ch = a;改为 char ch = 97; 结果如何C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院说明:很多系统将将字符处理成带符号的整数,即signed char型。它的取值范围是-128127。如果使用ASCII码为0127间的字符,由于字节中最高位为0,用%d输出时,会输出一个正整数。如果使用ASCII码为128255间的字符,由于在字节中最高位为1,用%d格式符输出时,就会得到一个负整数。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例如:c
34、har c=130;printf(“%d”, c);输出:-126如果不想按有符号处理,可以将字符变量定义为unsigned char类型, 这时其取值范围是0255。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例14 字母字符的大小写转换。#include int main( )char ch1 = a; /* 定义字符变量ch1并初始化*/char ch2; /* 定义字符变量ch2*/ch2 = ch1 - 32; /* 将ch1-32运算后的结果赋值给字符变 量ch2*/printf (ch2: %cn,ch2); /* 按照整型的格式输出ch2*/
35、ch1 = Z; /* 更新字符变量ch1中的值*/ch2 = ch1 + 32; /* 将ch1+32运算后的结果赋值给ch2*/printf (ch2: %cn,ch2); /* 按照字符的格式输出ch2*/return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例15 数字字符的使用#include int main( )/* 定义字符变量ch1并初始化为ASCII码值为9的字符*/char ch1 = 9;/* 定义字符变量ch2并初始化为数字字符9*/char ch2 = 9;printf (*n);/* 按照字符格式分别输出ch1和ch2中
36、存储的字符,并换行*/printf (ch1:%c,ch2:%cn,ch1,ch2);printf (*n);return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例16 #include int main( )/* 输出包含转义字符在内的一系列字符*/printf (hellorworld tHELLObWORLDn);return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.5.4 字符串常量字符串常量:一对双引号括起来的字符序列。例如:“how do you do.”, “CHINA,a,123.45
37、“不要将字符常量与字符串常量混淆。a是字符常量,a是字符串常量,二者不同。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院因此,若有:char c; c=a; 是正确的。char c; c=a ; 是错误的。char c; c=CHINA ; 也是错误的。不能把一个字符串赋给一个字符变量。C规定:系统在每一个字符串的结尾自动加一个字符串结束标志0,以便系统判断字符串是否结束。0字符的ASCII码值为0,是空操作字符,无显示C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院在c语言中没有专门的字符串变量,如果想将一个字符串存放在变量中
38、,以便保存,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中每一个元素存放一个字符。这将在后面章节中介绍。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.8 算术运算符和算术表达式3.8.1 C3.8.1 C运算符简介运算符简介 C C语言的运算符范围很宽,把除了控制语句和输语言的运算符范围很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符入输出以外的几乎所有的基本操作都作为运算符处理。处理。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.8.2 运算符和表达式 运算符:表示各种运算的符号。运算
39、符:表示各种运算的符号。例如:加、减、乘、除例如:加、减、乘、除 运算对象:常量、变量、函数运算对象:常量、变量、函数 表达式:用运算符号及圆括号把运算对象表达式:用运算符号及圆括号把运算对象连接起来的,符合连接起来的,符合C C语法规则的式子语法规则的式子例如:例如: 10+a+i10+a+i* *f-d/ef-d/eC C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院以下合法的表达式是 D(A A)2ab2ab(B B)-2ab-2ab(C C)2-a=b2-a=b(D D)a+2 a+2 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气
40、工程学院C的运算符有以下几类: 1算术运算符 (+-*/%) 2关系运算符 (=!=)3逻辑运算符 (!&|)4位运算符 ( |&)5赋值运算符 (=及其扩展赋值运算符)6条件运算符 (?:) 7逗号运算符 (,)8指针运算符 (*和&)9求字节数运算符 (s i z e o f)10强制类型转换运算符 ( (类型) )11分量运算符 (-)12下标运算符 ()13其他 (如函数调用运算符()1.定义2.优先级3. 结合方向C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院运算符的优先级在表达式求值时,先按运算符的优先级别高低次序执行。例如
41、先乘除后加减。如表达式a-b*c,b的左侧为减号,右侧为乘号,而乘号优先于减号,因此,相当于a-(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如a-b+c,则按规定的“结合方向”处理。如果一个运算符的两侧的数据类型不同,则会按数据类型转换方法先自动进行类型转换,使二者具有同一种类型,然后进行运算。运算符的结合方向(结合性) 算术运算符的结合方向为“自左至右”,即先左后右。“自左至右的结合方向”又称“左结合性”,即运算对象先与左面的运算符结合。运算符的结合方向为“自右至左”,即右结合性(例如,赋值运算符)。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学
42、院3.8.2 算术运算符和算术表达式1. 1. 算术运算符算术运算符 + +( (加法运算符,或正值运算符。如加法运算符,或正值运算符。如3+53+5、+3)+3) - -( (减法运算符,或负值运算符。如减法运算符,或负值运算符。如5-25-2、-3)-3) * *( (乘法运算符。如乘法运算符。如3 3* *5)5) / /( (除法运算符。如除法运算符。如5/3)5/3) % %( (模运算符,或称求余运算符,模运算符,或称求余运算符,% %两侧均应为两侧均应为整型数据,如整型数据,如7%47%4的值为的值为3)3)。说明说明:两个整数相除的结果为整数,如:两个整数相除的结果为整数,如5
43、/35/3的结果的结果值为值为1 1,舍去小数部分。,舍去小数部分。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院注意:(1) 两个整数相除的结果为整数,两个整数相除的结果为整数,VC采取采取“向零取整向零取整”方法舍去小数部分。方法舍去小数部分。如:如:5/3的结果为的结果为1, -5/3的结果为的结果为-1(2) % 运算符的求值结果与第一个数的符号一致。运算符的求值结果与第一个数的符号一致。如:如:-7%3的值为的值为-1 ,7%-3的值为的值为1C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院2. 算术表达式和运算对象n
44、算术运算对象包括常量、变量、函数等。例如:a*b/c-1.5+an算术表达式:由算术运算符和圆括号将运算的对象连接起来的,符合C语言语法规范的式子。n整个式子的运算结果作为表达式的值n运算结果的类型作为表达式的类型例如:9%3 就是一个算术表达式,此表达式的值为0,表达式的类型是int类型。 C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院2. 算术运算符的优先级与结合性(1) +、- 运算符的优先级: 4级 *、/、% 运算符的优先级:3级 所有运算符的结合方向: 自左向右(2) 在表达式求值时,先按运算符的优先级别高低次序执行。如果在一个运算对象两侧的运算符
45、的优先级别相同,则按“结合方向”处理。例如:a+b-c 、a+b*c、(a+b)*cC C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例17 表达式的使用假如星期日代表0,星期一代表1,星期二代表 2 .,变量today存放今天的数字,问tomorrow是多少,today过后的第100天呢?tomorrow = today + 1 正确吗 ?参考答案: tomorrow = (today + 1) % 7第100天: hund = ( today + 100 ) % 7C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院课堂练习有任意一
46、个三位数 ,如 number = 468; 如何获取此三位数各位上面的数字?参考答案:个位: u = number % 10 ;十位: t = (number / 10) % 10;百位: h = number /100 ;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3. 类型转换有两种类型转换:一种是在运算时不必用户指定,系统自动进行的类型转换,也称隐式转换,如3+6.5; 第二种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3. 隐式类型转换l整型、实型、
47、字符型数据间可以混合运算。例如: 10+a-8765.1234 是合法的。 lC规定:在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。 l转换方向:向占用字节数较多的类型转换后计算得结果,结果类型也为此类型。 因此,int + char double 运算时的转换为 double (系 统 自 动 转 换)C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院转换规则横向向左的箭头表示必 定的转换 纵向的箭头表示当运算 对象为不同类型时转换 的方向。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院 类型转换例子C C语言程
48、序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院3.2 强制类型转换运算符强制类型转换的一般形式为: (类型名)(表达式)将变量或表达式转换成所需类型的中间变量,原来变量或表达式的类型不发生变化。例如:(double) a *将a转换成double类型*(int)(a+b) *将a+b的值转换成整型*(int)a+b *将a的值转换成整型再与b相加*(float)(5%3) *将5%3的值转换成float型*C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例18 强制类型转换C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与
49、电气工程学院3.8.3自增、自减运算符作用是使变量的值增1或减1,如: +i,-i (在使用i之前,先使i的值加(减)1) i+,i- (在使用i之后,使i的值加(减)1)如果i的原值等于3,则执行下面的赋值语句: j =+i;(i的值先变成4, 再赋给,j的值为4) j=i+;(先将 i的值3赋给,的值为3,然后i变为4)C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院如何验证正误#include int main()int i =3;int j =3;printf(“+i = %dn”, +i);printf(“j+ = %dn”, j+);return 0
50、;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院例19 自增、自减运算符#include int main()int i =5,j=10; printf(“i+:%d,j-:%dn”, +i,j-);printf(“i+:%d,-j:%dn”, +i,-j);return 0;C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院注意:(1)自增运算符(+)和自减运算符(-),只能用于变量,而不能用于常量或表达式,如5+或(a+b)+都是不合法的。(2) +和-的优先级是第2级,结合方向是“自右向左”n 如果有-i+。 “-”和“+”运算符同优先级,而结合方向为“自右至左”(右结合性),即它相当于 -(i+)。C C语言程序设计(语言程序设计(公共基础)信息与电气工程学院信息与电气工程学院(3)注意:ANSI C并没有规定表达式中的子表达式的求值顺序。允许各编译系统自己安排,这样最后获得的结果就可能不同。因此务必要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食用油购销合同模板版
- 电池批发购销合同
- 绿植维护安装合同
- 垫资还款协议范本
- 2024解除、终止劳动合同协议书
- 冲突管理与处理技巧培训考核试卷
- 信息系统的数字金融与金融科技考核试卷
- 光学仪器的激光晶体技术原理与应用考核试卷
- 橡胶制品行业生态循环经济考核试卷
- 消防挂靠协议合同模板
- 教师资格考试高级中学音乐面试试题及解答参考
- DB36T+2036-2024地下病害体三维地质雷达探测技术规程
- 《中国税制讲座》课件
- 临床成人失禁相关性皮炎的预防与护理团体标准解读
- 《电气控制系统设计与装调》教案 项目五 任务二小车自动往返控制线路设计与安装
- 意识形态知识培训课
- 网络安全行业防火墙解决方案
- 2024固态电池需求趋势产业链发展现状及龙头企业布局分析报告
- JGJT46-2024《建筑与市政工程施工现场临时用电安全技术标准》知识培训
- 四川公务员考试(公共基础知识)真题试卷汇编1
- 中国历史人文地理(上)学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论