9月26日-高级语言程序设计-课程内容(4)

9月26日第四次上课记录


1,运算符和表达式

逻辑运算符:!,&&,||
位运算符:<<,>>,~,^,&,|
进行表达式的值的运算时,要考虑以下几点:

  1. 运算符连接的运算对象个数。有几个运算对象就叫几目运算符。
  2. 运算符的优先级。算术运算符的优先级和数学一样,c语言共有15个运算级,其中括号的运算及最高。
  3. 运算符的结合性。左结合和右结合。

除法运算时,如果要对小数部分进行舍弃,大多数编译器采用向零取整的方法。
求余运算时,运算结果的符号和被除数(即第一个运算对象)相同,例如-7%5=-2。
自增运算符(++)和自减运算符(–)运算速度比+1或者-1快,代码效率高,因为它和实际机器语言指令类似,但是随着编译器越来越智能,这一优势正在消失。++(–)i速度要比i++(–)快,因为后者要创造一个临时变量,把值赋给临时变量,然后自增,返回临时变量,前者增加后直接返回值。

  • ++i先递增后运算
  • i++先运算后递增

C语言采用“=”作为复制运算符,赋值表达式的语法:

  • 变量=表达式

表达式把右值赋给左值。“=”不能用来判断,如要判断需要用“==”,并且如果右值为表达式,还要注意精度问题。整数可以直接用 ==来比较,浮点数因为精度问题,只可以用|a-b|<x来比较。

复合赋值运算时的规则是:x(符号)=y即x=x(符号)y。
复合赋值运算的执行效率相比算术运算更高,因为复合赋值运算中的变量值计算一次,不像算数运算中要运算一次,再赋值一次。
sizeof运算符用于获得运算对象所占空间的字节数,返回整型。

2,数据混合运算和数据类型转换

1,自动类型转换(隐式类型转换),自动想表达数据能力更强的数据类型转换。转换顺序:long double>double>float>unsigned long>long>unsigned int>int
2,强制类型转换,其转换语法是:(数据类型关键字)表达式。
3,把一个数据从较低类型转换成较高类型称为类型扩展,反之称为类型压缩,类型压缩可能导致精度缺失。无论是自动还是强制转换类型都不会改变原来表达式的值和类型。

3,位运算

位运算是对二进制的位进行的运算,只能用于整型操作数,即带符号或不带符号的char,short,int,long。

运算符名称功能说明
取反单目,操作数每个二进制位都取反
&按位与双目,两个操作数对应二进制位都是1时,结果为1
|按位或双目,两个操作数对应二进制位其一是1时,结果为1
^按位异或双目,两个操作数对应二进制位相同结果为0,不同为1
<<左移双目,操作数的二进制位全部左移
>>右移双目,操作数的二进制位全部右移

左移n位即把原数乘以2的n次方,右移反之,移位即把对应位溢出。

4,C语句

C语句可大致分为两类,一类是描述计算机操作和运算的操作运算语句,一类是用于控制操作执行顺序的流程控制语句。

  • 表达式语句有:
    1,赋值语句
    2,函数调用语句
    3,空语句

  • 流程控制语句有:
    1,选择结构控制语句
    2,循环结构控制语句
    3,结束本次循环语句
    4,终止循环和多分支语句
    5,无条件转移语句
    6,函数返回语句

  • 复合语句由花括号{}形成,称为一个语句块。

除了花括号和各别语句不需要分号结束语句之外,所有的语句都需要分号作为结尾。

5,数据的输入和输出

使用输入设备向计算机程序提供数据的过程称为数据输入
计算机程序将数据通过输出设备展示出来的过程称为数据输出
C语言中所有数据输入和输出操作都是通过对标准I/O库函数调用完成,头文件stdio.h中声明了这些输入和输出库函数。

  • printf函数
    printf(格式控制字符串,输出列表)。格式控制字符串包括两部分,格式说明符和普通字符。
    格式说明符:%[附加格式字符]格式字符,其中附加格式字符位可选,对输出数据的现实方式进行修饰,不能单独使用。
格式字符含义
d以十进制输出整数
o以八进制输出整数
x,X以十六进制输出整数,x大小写控制十六进制大小写
u以无符号十进制输出整数
f以小数形式输出实数,保留6位
e,E以指数形式输出实数,位数部分保留6位小数,大小写对应指数e,E
g,G以f或e格式符中输出宽度较短的实数
c以字符形式输出一个字符
s输出一个字符串
附加格式字符含义
l指定输出long(d,o,x,u)或者double(e,f,g)
h用于d,o,x,u前输出short精度
mm为正整数常量。实际数据宽度小于m时,输出数据在宽度m的区域右对齐,左边补空格;实际数据宽度大于m时,按实际位数输出
.nn为正整数常量,用于f,e前表示输出n位小数;用于s前表示输出n个字符;用于整型前补n-1个0
-用于m前,使数据宽度范围内左对齐
+用于d,f,e前,输出正数带符号
0用于m前,输出区域左边的空白补0
#用于o,x前,表示输出八进制和十六进制的前导(0,0x)
*作为占位符,不打印输出列表某一项
  • scanf函数
    scanf(格式控制字符串,地址列表)。scanf函数的格式字符串包括两部分:格式说明符和普通字符。
    地址列表:地址列表有多个地址组成,由逗号分开,变量的地址可以使用&来获取。
格式字符含义
d输入十进制整数
o输入八进制整数
x输入十六进制整数
u输入无符号十进制整数
f,e,g输入实数,输入double型时,必须使用附加格式字符l
c输入一个字符
s输入一个字符串
附加格式字符含义
l用于d,o,x,u前,制定输入精度为long;用于e,f,g前,制定输入精度为double
h用于d,o,x前,制定输入精度为short
mm为正整数常量,表示输入数据的宽度为m
*表示输入的数据不存放到地址列表的地址

scanf输入字符时,输入内容要与格式控制字符串要求一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值