C语言课件 第三章3
合集下载
C语言课件第三章
三、 自增、自减运算符 ++ --
++、- -运算符的作用是使变量的值加1或减1
1)该运算符为单目运算符,其运算对象只能是 变量,不能为常量或者表达式。 例如: i++ 、x- - 都是正确的 5++ 、(x+y)++ 都是错误的
2)该运算符作前缀、后缀都可以 例如 i++、++i、i- - 、- -i 都是正确的
3)对变量而言 i++ 或者++i都相当于i=i+1 i- -或者- -i都相当于i=i-1
例如: main( ) { int i=3 , j=3; +i+++i; j---j;; printf (“%d, %d\n”, i, j ); }
运行结果:4,2
4)但如果作为表达式,前缀和后缀则不同: 后缀:先取值再运算(i++,先取i值,i再自加) 前缀:先运算再取值(++i,i先自加,再取i值)
2)强制类型转换运算符优先级高于算术运算符
float x=3.6; int y; y=(int)x%3+2;
x = ?3.6 y=?2
计算下列表达式的值 设 x=2.5, a=7,y=4.7
x+a%3 * (int)(7x7+.2y ) % 2 / 4
设 a=2,b=3,x=3.5,y=2.5
(float5).(0a+b )/2+(int3)(x)%(int2)(y)
例如: main() { int i=3; printf(“%d\n”+, +i+i+ ); printf(“%d”, i ); }
C语言程序设计实用教程第3章精品PPT课件
例如:#include<stdio.h>
#include <math.h> 这里的#include是编译预处理命令,其作用是将某个已经存在的文件 包含到程序中来。包含了头文件”stdio.h”才能调用标准输入输出函数; 包含了”math.h”才能调用数学函数。考虑到printf和scanf函数使用频 繁,系统允许使用这两个函数时可不加#include命令。 ② 库函数调用规则
?
6
第三章 顺序结构程序设计
3.1.1 控制语句
if~else~语句 选择分支语句 switch语句
结构化语句
while语句
控制语句
循环语句 do-while语句 for语句
非结构化语句
continue语句 限定转向语句 break语句
return语句
?
C语句
控制语句
if( ) ~ else ~ switch for ( ) ~ while ( ) ~ do ~ while( ) continue
break
goto
return
if (x>y) z=x;
else z=y;
a=3;
表达式语句 由表达式加一个分号构成一个语句。
复合语句
由{ }将一些语句括起来。
重点与难点:
各种数据类型的输入和输出格式控制。
11.10.2020
C语言程序设计
1
第三章 顺序结构程序设计
第三章 顺序程序设计
3.1 C语句概述 3.1.1 控制语句 3.1.2 表达式语句 3.1.3 复合语句
3.2 数据的输入与输出 3.2.1 字符输入输出函数 3.2.2 格式输出函数 3.2.3 格式输入函数
#include <math.h> 这里的#include是编译预处理命令,其作用是将某个已经存在的文件 包含到程序中来。包含了头文件”stdio.h”才能调用标准输入输出函数; 包含了”math.h”才能调用数学函数。考虑到printf和scanf函数使用频 繁,系统允许使用这两个函数时可不加#include命令。 ② 库函数调用规则
?
6
第三章 顺序结构程序设计
3.1.1 控制语句
if~else~语句 选择分支语句 switch语句
结构化语句
while语句
控制语句
循环语句 do-while语句 for语句
非结构化语句
continue语句 限定转向语句 break语句
return语句
?
C语句
控制语句
if( ) ~ else ~ switch for ( ) ~ while ( ) ~ do ~ while( ) continue
break
goto
return
if (x>y) z=x;
else z=y;
a=3;
表达式语句 由表达式加一个分号构成一个语句。
复合语句
由{ }将一些语句括起来。
重点与难点:
各种数据类型的输入和输出格式控制。
11.10.2020
C语言程序设计
1
第三章 顺序结构程序设计
第三章 顺序程序设计
3.1 C语句概述 3.1.1 控制语句 3.1.2 表达式语句 3.1.3 复合语句
3.2 数据的输入与输出 3.2.1 字符输入输出函数 3.2.2 格式输出函数 3.2.3 格式输入函数
c语言第三章ppt课件
§3.3 赋值语句
“=“是一个运算符 注意赋值表达式与赋值语句的区别
§3.4 输入输出在c中的实现
输入输出是以计算机主机为主体而言 输入输出是由函数来实现的
库函数:由厂商预先编写好,并编译成目标文件 使用库函数时,用预编译命令“#include”将有
关的“头文件”包含到用户源文件中。
#include <stdio.h> printf,scanf可不加#include命令
%m.ne和%-m.ne ,n指小数部分的小数位数 printf(“%e%10e%10.2e%.2e%-10.2e”,f,f,f, f,f); 设f=123.456,输出结果为
1.23456e+02 1.23456e+02 1.2e+02 1.2e+02 1.2e+02 ❖g格式符,用来输出实数,根据数值的大小,自动选
printf(“%f %10f %10.2f %.2f %-10.2f \n”,f,f,f,f,f) ;
运} 行结果:
123.456001 123.456001 123.46 123.46 123.46
❖e格式符:以指数形式输出实数 %e ,不指定输出数据所占宽度和数字部分的小数位数。 数值按规范化指数形式输出。 如:printf(“%e”,123.456);输出结果为1.23456e+02
❖格式控制:包含两种信息 格式说明: %格式字符 ,用于指定输出格式
普通字符或转义序列:原样输出
❖输出表列:要输出的数据(可以没有,也可以是表达 式,多个时以“,”分隔
printf(参数1,参数2,参数3……参数n )
格式字符
❖d格式符:输出十进制整数 %d ,按整型数据的实际长度输出 %md,m为指定的输出字段的宽度。如果数据的位数 小于m,则左端补空格,否则按实际位数输出 例:printf(“%4d,%4d”,a,b); 若a=123,b=12345,则输出结果为▂123,12345 %ld,输出长整型数据 例:long a=135790;printf(“%ld”,a); 也可以指定字段宽度,如%8ld
C语言程序设计第3章课件
【例3-2】产生10~100间的随机整数,并输出。 #include <stdio.h>
#include <math.h> #include <time.h> main()
{
int a,b;
srand( time( 0 ) ) ; / * 时 间 作 为 随 便 数 种 子 , 每 运 行 一 次 , 随 机 值均不同*/
v宏定义
在C源程序中允许用一个标识符来表示一个字 符串, 称为“宏”。
在C语言中, “宏”分为有参数和无参数两种。 下面分别讨论这两种“宏”的定义和调用。
大学计算机基础
网络信息中心教研室
26
3.6 编译预处理
1 不带参数的宏定义
不带参数的宏的一般定义方式为: #define 标识符 字符串
说明:
(1) “#define”为宏定义的关键字, “标识符”表示定义 的宏名, “标识符”用大写字母,以便区分于变量名或 函数名,也可以用小写字母;
第3章
顺序结构程序设计与编译预处理
网络信息中心教研室
主要内容
3.1 C语句概述 3.2 赋值语句 3.3 输入与输出 3.4 常用函数举例 3.5 编译预处理 3.6 顺序结构程序设计举例
大学计算机基础
网络信息中心教研室
2
3.1 C语句概述
C语言的语句用来向计算机系统发出指令, 单 独的一条语句或者是复合语句完成特定的操作, 这些操作的不同组合,用来实现一系列数据处理 功能。
4. 复合语句 把多个语句用{语句1;语句2;...语句n}这种形式
构成一个比较复杂的语句称为复合语句,又称为 语句块。
如两个变量之间数据的交换。此时,应把复合语句 看成一个单条语句。例如:
#include <math.h> #include <time.h> main()
{
int a,b;
srand( time( 0 ) ) ; / * 时 间 作 为 随 便 数 种 子 , 每 运 行 一 次 , 随 机 值均不同*/
v宏定义
在C源程序中允许用一个标识符来表示一个字 符串, 称为“宏”。
在C语言中, “宏”分为有参数和无参数两种。 下面分别讨论这两种“宏”的定义和调用。
大学计算机基础
网络信息中心教研室
26
3.6 编译预处理
1 不带参数的宏定义
不带参数的宏的一般定义方式为: #define 标识符 字符串
说明:
(1) “#define”为宏定义的关键字, “标识符”表示定义 的宏名, “标识符”用大写字母,以便区分于变量名或 函数名,也可以用小写字母;
第3章
顺序结构程序设计与编译预处理
网络信息中心教研室
主要内容
3.1 C语句概述 3.2 赋值语句 3.3 输入与输出 3.4 常用函数举例 3.5 编译预处理 3.6 顺序结构程序设计举例
大学计算机基础
网络信息中心教研室
2
3.1 C语句概述
C语言的语句用来向计算机系统发出指令, 单 独的一条语句或者是复合语句完成特定的操作, 这些操作的不同组合,用来实现一系列数据处理 功能。
4. 复合语句 把多个语句用{语句1;语句2;...语句n}这种形式
构成一个比较复杂的语句称为复合语句,又称为 语句块。
如两个变量之间数据的交换。此时,应把复合语句 看成一个单条语句。例如:
《C语言程序设计》课件——第三章
第三章 数据类型、 运算符和表达式
• 标识符:用来标识变量名、符号常量名、 数组名、函数名、文件名的有效字符序列。 – 关键字 – 预定义标识符 – 用户定义标识符 • 字母或下划线开头,后跟字母、数字和下 划线组成。 • 变量要先定义后使用
15
第三章 数据类型、 运算符和表达式
下列字符串中可以做C语言程序中的标识符的 有哪些? print _3id oodb I\am 3pi Line# str_1 His.age while aBc
小数形式:如 123.0 .123 0.0 12.5
指数形式:如123e2 123E2
7
2.4 字符型常量 Character constant
第三章 数据类型、 运算符和表达式
• 单引号括起来的一个字符。如: ' a ' • 字符常量的值是一个数字值。如字符常 量' 0 ' ,其ASCII为48,所以存储的实际 值为48。 • 字符常量可以象整数一样参与运算。
float double
long double长双精度
128
-1.2*10-4932 ~1.2*104932
2、变量的定义
float x,y;
double z;
/*指定x,y为单精度实型变量*/
/*指定z为双精度实型变量*/
20
3.5 字符变量
1、变量的定义
char c1,c2; /*指定c1,c2为字符型变量*/
第三章 数据类型、 运算符和表达式
2、字符型数据的存储
以ASCII码存储,存储形式与整型一样,可以和整数 进行运算 main() {char c1,c2; 结果:A,B c1=„a‟;c2=„b‟; c1=c1-32;c2=c2-32; 65,66 printf(“%c,%c\n”,c1,c2); printf(“%d,%d\n”,c1,c2); }
c语言课件第三章
4
3.2 常量(续) 常量(
3.2.2 实型常量 实型常量在C语言中又称为实数或浮点数。在C语言 中,实数只采用十进制。它有两种表示形式: 1 1.十进制形式。这种形式的数由整数部分、小数点 和小数部分组成(注意必须有小数点)。如: 1.24,0.345,.222,234.0,333.,0.0等。 2.指数形式。这种形式由三部分组成:实数部分、 字母E或e和整数部分。象123x1022可以表示为 123E22或123e22。要注意,字母E或e之前必须有 数字,之后的数字必须为整数。如e3、2.1e3.5、 2.7e、e等都不是合法的指数形式。
5
3.2 常量(续) 常量(
3.2.3 字符常量 C语言中的字符常量是用单引号(‘)括起来的一 个字符。 如’A’、’x’、’D’、’?’、’3’、’X’等 都是字符常量。 C语言中还规定有另一类字符常量,它们以'\' 开头,被称作转义字符,意思是将反斜杠 (\)后面的字符转变成另外的意义。
6
3.2 常量(续) 常量(
20
3.4 C语言的运算符和表达式 (续)
3.4.9 不同类型数据之间的转换
1.自动类型转换 2.强制类型转换
强制类型转换的一般形式为: (类型标识符)(表达式) 如(int)(x+y)是将x+y的结果强制转换成int型。又 如(float)x/y是将x强制转换成float型后,再进行 运算。 注意:经强制类型转换后,得到的是一个所需类 型的中间值,原来变量的类型并没发生变化。
7
3.2 常量(续) 常量(
3.2.5 符号常量 C语言允许将程序中的常量定义为一个标 识符,称为符号常量。符号常量一般使 用大写英文字母表示,以区别于一般用 小写字母表示的变量。符号常量在使用 前必须先定义,定义的形式是: #define 标识符 常量
C语言课件第三章PPT
标准输入输出
格式输出函数 printf() 格式: 输出格式, 格式: printf(输出格式 输出表列 输出格式 输出表列) 功能: 功能 : 在屏幕上按输出格式的说明输出表列 中指定的各表达式的值。 中指定的各表达式的值。 注意:输出格式一般包括以下三部分内容: 注意:输出格式一般包括以下三部分内容: • 原样照印的字符信息。如: X=; 原样照印的字符信息。 • 格式说明符 见以下列表 一个格式说明符 格式说明符(见以下列表 见以下列表),一个格式说明符 对应输出表列中一个表达式. 对应输出表列中一个表达式 如: %f %d; • 格式控制符 如: \n 换行。 格式控制符. 换行。
标准输入输出
字符输出函数 putchar()
格式: 格式: putchar(c) 功能: 在屏幕上输出变量c的值 的值。 功能: 在屏幕上输出变量 的值。 注意: 可以是字符型或整型变量 可以是字符型或整型变量, 注意 : c可以是字符型或整型变量,也可以是控制字符或转 义字符(其后介绍 其后介绍)。 义字符 其后介绍 。 例: 运行该程序,将在屏幕上显示:good (c401.c) 运行该程序,将在屏幕上显示: # include “stdio.h” /*putchar()函数在 函数在stdio.h文件中 文件中*/ 函数在 文件中 main() { char a,b; int c,d; a='g'; b='o'; c=111; d=100; putchar(a); putchar(b); putchar(c); putchar(d); }
C语句分类
由一个表达式构成的语句。 表达式语句 由一个表达式构成的语句。 如: x=5; i=i+1; ++y; c--; x+y; 是一个语句,但无实际意义。 是一个语句,但无实际意义。 函数调用语句 由一个函数调用加一个分号构 成的语句。 成的语句。如: printf(“输入三个数 输入三个数k,j,f:”); 输入三个数 scanf(“%d,%d,%f”,&k,&j,&f); 完成一定的控制功能,有以下9种 控制语句 完成一定的控制功能,有以下 种: 1) if ( ) ~ else ~ (条件语句 条件语句) ) 条件语句 2) switch ~ (多分支选择语句 多分支选择语句) ) 多分支选择语句 3) for ( ) ~ (循环语句 循环语句) ) 循环语句 4)while ( ) ~ (循环语句 循环语句) ) 循环语句
c语言课件第3章
程序清单3-1 progression.c
C 语 言 程 序 设 计
双目复合赋值运算符
序号 1 2 3 4 5 6 7 8 9 10 复合运算符 += -= *= /= %= &= |= ^= <<= >>= 复合运算符的含义 相加并赋值 相减并赋值 相乘并赋值 相除并赋值 求模并赋值 按位AND并赋值 按位OR并赋值 按位XOR并赋值 左移并赋值 右移并赋值
第 三 章 c 语 言 程 序 设 计 基 础
C 语 言 程 序 设 计
While的常见错误 – “one liners”
while (num < minimum) scanf(“%d”, &num); printf(“must > %d.\n”, minimum); printf(“Please try again.\n”);
(1) for(;;) {…… for(;;) {……} …… } (3) while() {…… while() {……} } (5) while() {…… do {…… }while();
}
(2) for(;;) {…… while() {……} …… } (4) do {…… do {…… }while(); }while(); (6) do { …… for(;;) {……}
#include <stdio.h>
void main (void){ int nSum; int i; nSum=0; i=1; while(i<101){ nSum+=i; i++; } printf("1+2+3+……+99+100=%d\n",nSum); } 程序清单3-6 progression-2.c
C语言上课课件第3章
上一页
下一页
例3.2 从键盘输入一个小写字母,用大 写形式输出该字母.
分析: 1.输入小写字母存入变量a; 2.转换成大写a = a-32; 3.输出 a.
上一页
下一页程序:Fra bibliotek#include "stdio.h"
void main<> { char a;
printf<"Iinput aaleltotwere:r"c>a;se letter:">; aa==ggetecthchaar<r<>>;; a = a-32; pa=ri‘ntaf<’"<%=ca&\n&",aa<>=;‘z’?a-32:a;
scanf语句在运行时,会停下来,等待从键盘输入值依 次存入地址列表中的地址空间,即相当于从键盘给变量 赋值.
上一页
下一页
输入数据时要严格按照scanf语句中格式控制字 符串的形式输入.看下面的例子:
1. scanf<输"%入d:%1d"2,&回a车,&b>或; 者 1回车2回车
2. scanf<"%d,%d",&a,&b>; 输入:1,2回车
y=fabs<3*sin<x>+4*cos<x>>+exp<x>;
其中,fabs,sin,cos,exp都属于头文件 math.h,用到这些函数,必须在程序的预处 理语句中用#include<math.h>把数学函数 库包含进来.
上一页
标准课件C语言第3章
3.5.3 if语句 语句
两种格式: 两种格式: 格式1: 表达式) 格式 if (表达式 表达式 语句; 语句 例:if(x>y) {x=x-y; printf(“%d”,x);} 格式2: 表达式) 格式 if (表达式 表达式 语句1; 语句 else 语句 ; 语句2; 例:if(x>y) printf(“%d”,x); else printf(“%d”,y); if(x>y) x=x-y; printf(“%d”,x);
习题:阅读程序,写结果: 习题:阅读程序,写结果:
main() {int x,y; scanf(“%d”,&x); y=-1; if(x!=0) { if(x>0) y=1;} else y=0; printf(“y=%d\n”,y); }
说明: 说明 (1) 表达式一般为逻辑表达式或关系表达式, 表达式一般 逻辑表达式或关系表达式 一般为 表达式或关系表达式, 任何类型的表达式 包括整型、 但也可为任何类型的表达式(包括整型 实型、字符型、 但也可为任何类型的表达式 包括整型、实型、字符型、 指针型); 指针型); 非零,则条件成立, 非零,则条件成立, 成立 否则条件不成立。 条件不成立 否则条件不成立。 例1:if(3) printf(“OK”); : 例2:if(‘a’) printf(“%d”,’a’); : (2) if、 else后的单条语句要有分号; 、 后的单条语句要有分号; 后的单条语句要有分号 else子句必须与 配对使用。 子句必须与if配对使用 子句必须与 配对使用。 括起来, (3) if、 else后的多条语句,要用 }括起来,成为一个 后的多条语句, 、 后的多条语句 要用{ 括起来 复合语句
以内的整数和: 求100以内的整数和 以内的整数和 #include <stdio.h> main() 对数据的描述 { int i,sum=0; 对数据操作的描述 for(i=1;i<=100;i++) sum=sum+1; printf(“sum=%d\n”,sum); }
C语言第3章课件.ppt
例如: “x>0” 隐含 x 的值是否大于0
P56
3.1.2 关系表达式
P56
用关系运算符将两个表达式(可以是算术表达 式或关系表达式、逻辑表达式、赋值表达 式、字符表达式)连接起来的式子,称关系 表达式。
例如,下面都是合法的关系表达式:
a>b, a+b>b+c, (a=3)>(b=5), 'a'<'b', (a>b)>(b<c)
真
【例3.1】假设a、b、x为整型变量,y为单 精度型变量,请观察输出结果。
x=1; a=x == 0; 假 printf(“%d”,a); 输出 0
【例3.1】假设a、b、x为整型变量,y为单 精度型变量,请观察输出结果。
x=3; a=x > 0; 真 a的值1 b=x<5; 真 b的值1 printf(“%d”, a==b ); 输出1
【例3.7】输入3个不同的整数存放在 a、b、c中。从小到大排序。
三个数排序过程 冒泡法
if ( a>b ) {temp=a; a=b; b=temp;}
765
a bc
if ( b>c )
6
7
5
{temp=b; b=c; c=temp;}
a
b
冒c
泡
冒 泡
56
56
7 if ( a>b )
a
b
c
{ temp=a; a=b; b=temp; }
第3章 分支结构程序设计
3.1 关系运算符和关系表达式 3.2 逻辑运算符和逻辑表达式 3.3 if语句 3.4 switch语句
例题链接
例3.1
例题链接
例3.2 例3.3
P56
3.1.2 关系表达式
P56
用关系运算符将两个表达式(可以是算术表达 式或关系表达式、逻辑表达式、赋值表达 式、字符表达式)连接起来的式子,称关系 表达式。
例如,下面都是合法的关系表达式:
a>b, a+b>b+c, (a=3)>(b=5), 'a'<'b', (a>b)>(b<c)
真
【例3.1】假设a、b、x为整型变量,y为单 精度型变量,请观察输出结果。
x=1; a=x == 0; 假 printf(“%d”,a); 输出 0
【例3.1】假设a、b、x为整型变量,y为单 精度型变量,请观察输出结果。
x=3; a=x > 0; 真 a的值1 b=x<5; 真 b的值1 printf(“%d”, a==b ); 输出1
【例3.7】输入3个不同的整数存放在 a、b、c中。从小到大排序。
三个数排序过程 冒泡法
if ( a>b ) {temp=a; a=b; b=temp;}
765
a bc
if ( b>c )
6
7
5
{temp=b; b=c; c=temp;}
a
b
冒c
泡
冒 泡
56
56
7 if ( a>b )
a
b
c
{ temp=a; a=b; b=temp; }
第3章 分支结构程序设计
3.1 关系运算符和关系表达式 3.2 逻辑运算符和逻辑表达式 3.3 if语句 3.4 switch语句
例题链接
例3.1
例题链接
例3.2 例3.3
【学习课件】第三章C语言-第三章
17
注意:
·可在整型常数后添加一个"L"或"l"字母表示该数 为长整型数,如22L, 0773L, 0Xae4l。
·另外, 所有整数的缺省类型是int,可在整型常数 后添加一个"L"或"l"字母表示该数为长整型数, 如 22L,0773L, 0Xae4l。
·若加上一个"u"或"U"字母表示该数为无符号整型 数,如27u, 0400u, 0xb8000000u。
2021/7/9
32
main() {
char c1,c2; c1 = ‘A’; c2 = ‘B’; printf("%c %c",c1+32,c2+32); }
该例的输出是: a b
2021/7/9
33
main() {
char c1,c2; c1 = 'a'; c2 = 'b'; c1 = c1 - 32; c2 = c2 - 32; printf("%c %c",c1,c2); }
·若加上一个"ul"或"UL"字母表示该数为无符号长 整型数,如 27ul, 0400UL, 0xb8000000UL。
·当整数的值超出int类型所能表示的范围时称为整 数溢出。
2021/7/9
18
3.2、整型变量
1.整型变量的分类:加上不同的修饰符, 整型变 量有以下几种类型;
C语言标准没有规定整型变量在计算机内存中所 占的字节数,它与具体的机器和操作系统有关:
2021/7/9
30
5.2 字符变量
char c1,c2; /* 定义c1、c2为字符变量 */ c1 = 'a'; c2 = 'b';
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.自加、自减运算符 运算特点:
(4)作用:①产生一个表达式的值(运算结果) ②改变变量本身的值 若i的值为5 ++i i的值:6 该表达式的值:6 i++ 该表达式的值:5 i的值:6 --i i的值:4 该表达式的值:4 i-该表达式的值:5 i的值:4 特点:前缀运算是变量先变化再使用,而后缀运算 是变量先使用后变化。
例:变量a的值为9,计算a+=a-=a+a的值
分析:(1)a+a=18 (2)a-=18 即:a=a-18 得a=-9 (3)a+=a- 即:a+=-9 a=a+(-9) 得a=-18
∴ a+=a-=a+a的值为-18
练习:
若有int m=5,y=2; 则表达式y+=y-=m*=y后,y的值是?
a=3.600000,i=3
#43; * / % ①除了+、-既可以做单目运算符又可以做双目运 算符以外,其他的符号只能做双目运算符。 ②%的两个操作数只能是整型。左侧为被除数,右侧 为除数,结果为余数。 ③作为双目运算符两边的运算数的类型必须一致, 所得结果类型与运算数类型一致。 如:1.0/2.0得0.5 1/2得0 ④若两边类型不一致,系统将自动转换成同一类型, 再计算。如:9.0/2 9/2.0 都得4.5
算术表达式和运算符的 优先级与结合性
算术表达式:使用算术运算符和括号将 运算对象连接起来,符合 C 语法规则的式 子。 运算对象包括:常量、变量、函数等。 例如:2+sqrt(c)*b
1)优先级
()
高
+
-
*
/
双目
%
+
低
双目
单目
2)结合性 只有单目运算符的结合性是从右到左,其 余运算符的结合性是从左到右。 如:(5+1)%4 5+1/2 5*-2 5*(-2) 运算规则: (1)使用圆括号必须配对,由内向外依次计算 (2)按优先级由高到低进行,同一级,从左到 右进行。
3.10 赋值运算符和赋值表达式
4. 赋值表达式 由赋值运算符和一个表达式连接起来的 式子称为“赋值表达式”。 形式:<变量><赋值运算符><表达式> 例如:x=y=z=7 a=5+(b=6) a=(b=4)+(c=6) a=(b=10)/(c=2)
赋值表达式作为表达式的一种,使赋值操 作不仅可以出现在赋值语句中,而且可以以 表达式形式出现在其它语句中,例如: b=3; printf("%d",a=b);
例 逻辑运算符的使用。
#include <stdio.h> void main() { int a,b,c,d,e; a=1,b=2,c=3,d=-1; e=!a+b>c&&d; /*注意运算符的处理顺序*/ printf("e=%d\n",e); }
注意:
①.在数学上关系式0<x<10,在C语言中不能如 此表示,应表示为0<x&&x<10,才能正确表述 该逻辑关系。即只有当&&两边的表达式都成立 (为“真”)时,才表示x是符合该条件的值。 ②.在C语言中,由&&或||组成的逻辑表达式, 在特定的情况下会产生“短路”的现象。
3.6.1 运算符简介 (9)求字节数运算符(sizeof); (10)强制类型转换运算符; (11)分量运算符(.、->); (12)下标运算符([]); (13)其他运算符;
3.6.3 强制类型转换运算符
功能:将一个表达式的值转换成指定的类型。 例如:(int)(a+b) (int)3.234=3 不四舍五入 double(10%3)=1.000000 (int)x x的值不变 两种类型转换: 不指定类型情况下,系统自动转换; 在自动类型不能实现目的时,使用强制类型转换
3.10 赋值运算符和赋值表达式
2. 不同数据类型的赋值处理 如果赋值运算符两侧的类型不一致,但都 是数值型或字符型时,在赋值时系统会自动 进行类型转换。 例如:int i; i=3.65; 结果是使i的值为3。
请参考表3.7 《不同数据类型的赋值处理》P60
3.10 赋值运算符和赋值表达式
3. 复合的赋值运算符 复合赋值运算符有 10 种,其中与算术运算 符有关的: += -= *= /= %= 其优先级与赋值运算符的优先级相同。 例如: x+=5 等价于 x=x+5 a*=b+3 等价于 a=a*(b+3)
复习:
设有int x=11;则表达式(x++*1/3)的值是? 若s是int变量,有s=6,则表达式 s%2+(s+1)%2 的值为? 若有:int a=7; float x=2.5,y=4.7;则表达 式 x+a%3*(int)(x+y)/4 的值是?
3.9 逻辑运算符及其表达式
1.逻辑运算符 C语言中提供了三种逻辑运算符: && 逻辑“与”、 || 逻辑“或”、 ! 逻辑 “非” 2.逻辑表达式和逻辑运算符的优先级与结合性 由逻辑运算符和运算对象所组成的表达式称为 逻辑表达式。逻辑运算的对象可以是C语言中任意 合法的表达式。逻辑表达式的运算结果是:0或1。 例如:(a>b)&&(x>y)
首先b的值赋给变量a,然后输出a的值为3。
3.11 逗号运算符和逗号表达式
“,”是C语言提供的一特殊运算符,用其连接的 式子称逗号表达式。 形式:表达式1,表达式2,……,表达式n 说明: (1)从左到右依次运算,最后一个表达式的值就 是此逗号表达式的值。 如: (a=5,b=7,c=a+b) (i=3,i++,++i,i+5) (2) 所有运算符中,逗号运算符的优先级别最 低。
第三章 数据类型、运算符和表达式
3.6 运算符与表达式 3.7 算术运算符和算术表达式 3.8 关系运算符和关系表达式 3.9 逻辑运算符和逻辑表达式 3.10 赋值运算符和赋值表达式 3.11 逗号运算符和逗号表达式
3.6 算术运算符合算术表达式 3.6.1 运算符简介
C语言的运算符可分为以下几类: (1)算术运算符(+、-、*、/、%、++、--) (2)关系运算符(>、<、==、>=、<=、!=) (3)逻辑运算符(!、&&、||) (4)位运算符(<<、>>、~、|、∧、&=) (5)赋值运算符(=,+=、-=、*=、/=等) (6)条件运算符(?:) (7)逗号运算符(,) (8)指针运算符(*和&)
2.自加、自减运算符 运算特点:
(5)结合方向:自右至左 如:-i++ 即-(i++) 若i=3, 则表达式、i为多少?
【例3.18】
#include <stdio.h> main() { int i=3; printf("%d\n",(i++)+(i++)+(i++)); printf("%d\n",i); }
2.自加、自减运算符 运算特点:
(1)“++”和“--”的运算结果是使运算对象的值增 1或 减1。作用的对象是变量。 如:i++相当于i=i+1 i--相当于i=i-1 (2) “++”和“--”是单目运算符,运算对象可以 是整型变量,也可以是实型变量,不能是常量和表 达式。 如:i++ ++j ++3 (i+j)-(3)可作前缀,也可作后缀。 如: ++i --i i++ i--
强制类型转换 一般形式为: (类型名)(表达式)
注意:表达式应
该用括号扩起 来。如果写成 ( int)x+y 则 只将 x 转换成整 型,然后与 y 相 加。
【例3.16】 【例3.17】略
#include <stdio.h> main() { float a; int i; a=3.6; i=(int)a; printf("a=%f,i=%d",a,i); }
VC++中的运行结果: TC中的运行结果: 9 12 6 6
有的系统按照顾自左而右顺序求解括 号内的运算,表达式相当于3+4+5,即12, i的值为6。 而有些系统 (VC++) 把 3 作为表达式中 #include <stdio.h> 所有i的值,因此 main() 3个i相加,得到表达式 {的值为6。 值为9,i int i=3,a,b,c,d; 为了避免出现这种歧义性,应在算法 a=i++; b=i++; c=i++; 上采取措施,避免出现混淆。如果想得 d=a+b+c; 到12,可以写成: printf("%d\n",d); printf("%d\n",i); }
2.关系表达式和关系运算符的优先级与结合性
由关系运算符组成的表达式,称关系表达式。关系运 算符两边的运算对象可以是C语言中任意合法的表达 式。 例如:5>0、(a=3)>(b=5)、a>=c!=c等都是合法 的关系表达式。 ①.优先级 关系运算符的优先级低于算术运算符,高于赋值运算 符。 在六个关系运算符中,<、<=、>、>=的优先 级相同,高于==和!=,==和!=的优先级相同。 ②.结合性 关系运算符都是双目运算符,其结合性均为自左向右。