C语言运算符和常用输入输出函数
5.运算符
(1)算数运算符
+ - * / %(求余)
双目运算符:2个操作数
1)%的操作数必须是整形数据或者和整形数据兼容的数据类型;
2)%左操作数是正数,结果是正数,左操作数是负数,结果是负数。
++ --
单目运算符:1个操作数
1)++num(前置++):先加后用;
2)num++(后置++):先用后加。
3)--num(前置--):先减后用;
4)num--(后置--):先用后减。
(2)赋值运算符
= += -= *= /= %=
左值:放在赋值运算符左边的量,左值只能是变量。
右值:放在赋值运算符右边的量,右值可以是常量、变量、表达式。
普通用法:赋值运算符左右两边的数据类型要一致。
当赋值运算符左右两边的数据类型不一时:
1)当浮点型数据赋值给整形数据,只保留整数部分,精度损失;
2)若赋值运算符左右两边是空间一致的数据类型,直接拷贝内存;
3)补符号位:小数据放入大空间,高位补符号位(正数补0,负数补1);
4)高位截断:大数据放入小空间,保留低位,高位截断。
num += 10 <=> num = num + 10;
cnt += 10 + 5 <=> cnt += (10 + 5);
除了逗号运算符,赋值运算符比其他运算符优先级都低。
(3)三目运算符
三个操作数
语法:表达式 ?表达式1 :表达式2
如果表达式的结果为真(成立),则三目运算符的最终结果为表达式1的结果。
如果表达式的结果为假(不成立),则三目运算符的最终结果为表达式2的结果。
(4)逗号运算符和sizeof运算符
num = 2+3, 4*5, 6-4; //5
num = (2+3, 4*5, 6-4); //2
注意:
1)逗号运算符优先级最低;
2)由逗号运算符组成的多个表达式的结果是最后一个式子的结果;
sizeof(数据类型/变量/常量/表达式)
功能:获取数据类型/常量/变量/表达式的结果在计算机内存中占的字节数。
返回结果:unsigned long --> %ld
(5)运算符的优先级和结合方向
优先级:
1):括号>单目运算符>双目运算符>三目运算符>赋值运算符>逗号运算符;
2):算数运算符>关系运算符>逻辑运算符。
结合方向:优先级相等时,看结合方向
单目运算符,三目运算符,赋值运算符自右向左运算。
二、常用输入输出函数
函数:封装的一个功能模块
输入输出:标准C库提供的输入输出函数。
1.putchar/getchar
int putchar(int c);
功能:向终端输出一个字符。
参数:要输出的字符的ASCII值。
返回值:返回输出字符的ASCII值。
int getchar(void);
功能:从终端读取一个字符。
参数:空。
返回值:返回终端读到的字符的ASCII值。
2.printf/scanf
printf:
功能:向终端输出格式化后的字符串。
(1)输出非格式控制符的数据
(2)输出带有格式控制符的数据
%d 以十进制有符号整形数据输出
%u 以十进制无符号整形数据输出
%ld 以十进制有符号长整形数据输出
%lu 以十进制无符号长整形数据输出
%o %O 以八进制整形数据输出(%#o %#O: 0144)
%x %X 以十六进制整形数据输出(%#x %#X: 0x64)
%f 以单精度浮点型数据输出
%lf 以双精度浮点型数据输出
%c 以字符型数据输出
%s 以字符串形式输出
%e %E 以科学计数法的形式输出(3.14e2)
(3)输出带有多个格式控制符的数据
(4)域宽输出设置
%nd 以n位域宽输出
%-nd 以n位域宽输出并左对齐
%0nd 以n位域宽输出,用0补齐
%.nf 以保留n位小数输出
%m.nf 以保留n位小数,m位域宽输出
scanf:
功能:从终端读取一个字符串并将其转换成目标格式。
注意:
1)scanf在使用时,“”里面是什么内容,终端必须输入同样内容;
2)sacnf的“”中除了格式控制符,尽量少写其他数据;
3)%s 以字符串形式输入时,要用字符数组接收,遇到空格会停止读取。
(1)scanf读取控制符数据
(2)scanf读取多个控制符数据
1)输入数字型数据时,中间用空格,回车或Tab隔开;
2)输入字符型数据时,会读取空格,回车和Tab;
3)用其它类型的数据隔开时,会停止读取。
4)在%c前面输入空格可以吸收输入的空格,回车和Tab。
3.puts/gets
puts:
功能:将字符串输出到终端,自动增加‘\n’(自动换行)。
gets:
功能:从终端读取字符串,并存入字符型数组中。
注意:gets是一个危险的函数,可能会造成数组越界。