- 格式化输入输出
Scanf和printf是C语言中频繁使用的两个函数,用他们来格式化输入和输出。
- printf函数
printf用来显示格式串的内容,并且在该串中的指定位置插入可能的值。调用printf时必须提供格式串,格式串后面的参数是需要在显示时插入到该串中的值:
printf(格式串,表达式1,表达式2...);
显示的值可以是常量、变量或者更加复杂的表达式。
格式串包含普通字符和转换说明:
转换说明:以字符%开头。用来表示打印过程中待填充的值的占位符,%之后的信息指定了把数值从内部形式(二进制)转换成打印形式(字符)的方法。
例如:%d指定printf把int型值从二进制形式转换成十进制数字组成的字符串。
转换说明可以用%m.p X格式或%-m.p X 格式这里m、p的都整型常量而X是字母。 m和p都可选的。如果省略p,p和m 之间的小数点也要去掉。在转换说明%10.2f中,m是10,p是2。在转换说明%10f中10(连同小数点一起)省去了;而在转换说明%.2f中,m省去了。
最小栏宽(m):指定了要显示的最小字符量。如果要显示的数值所需的字符数少于m那么值在字段内右对齐的。。如果要显示的值所需的字符数多于那么栏宽会自动扩展为所需的尺寸。
精度(P):有以下几种:
d——表示十进制(基数为10)形式的整数。指明了待显示数字的最少个数(必要时在数前加上额外的零);如果省略,则默认它的值为1。
e ——表示指数(科学记数法)形式的浮点数。指明了小数点后应该出现的数字个数(默认值为6)。如果为0,则不显示小数点。
f——表示“定点十进制”形式的浮点数,没有指数。的含义与说明符中的一样。
g——表示指数形式或者定点十进制形式的浮点数,形式的选择根据数的大小决定。
p意味着可以显示的有效数字(不是小数点后的数字)的最大数量。与转换指定符f不同,g的转换将不显示尾随的零。此外,如果要显示的数值没有小数点后的数字,g就不会显示小数点。
转义序列:“\n”被称为转义序列,使得字符串包含一些特殊字符而不会使编译器引发问题,这些字符包括非打印的(控制)字符和对编译器有特殊含义的字符(如)后面会提供完整的转义序列表,现在先看一组示例
警报(响铃)符:\a(输出\a会产生一声鸣响)
回退符:\b(使光标从当前位置回退一个位置)
换行符:\n(标跳到下一行的起始位置)
水平制表符:\t(光标移动到下一个制表符的位置)
- Scanf函数
scanf函数的格式串也可以包含普通字符转换说明两部分。
必须检查转换说明的数量是否与输入变量的数量相匹配,并且检查每个转换是否适合相对应的变量与printf函数一样,编译器无法检查出可能的匹配不当另一个陷阱与符号有关,&符号通常被放在scanf函数中每个变量的前面。
注意:区分格式的不同
空白字符:当在格式串中遇到一个或多个连续的空白字符时,scanf从输入中重复读空白字符,直到遇到一个非空白字符(把该字符“放回原处”)为止,格式串中空白字符的数量无关紧要,格式串中的一个空白字符可以输入中任意数量的空白字符相匹配(附带提一下,在格式串中包含空白字符并不意味着输入中必须包含空白字符格式串中的一个空白字符可以输入中任意数量的空白字符相匹配,包括零个)。
其他字符:当在格式串中遇到非空白字符时,scanf将把它下一个输入字符进行比较如果两个字符相匹配,那么scanf会放弃输入字符,并继续处理格式串如果两个字符不匹配,那么scanf会把不匹配的字符放回输入中,然后异常退出,而不进一步处理格式串或者从输入中读取字符。
- 表达式
- 算术运算符
这类运算符可以执行加法、减法、乘法和除法。
注意:
运算符可能产生意外的结果。当两个操作数都是整数时,运算符会丢掉分数部分来“截取”结果。因此,1 /2的结果是0而不是0.5。
运算符%要求操作数是整数。如果两个操作数中有一个不是整数,程序将无法编译通过。
把0用作/或%的右操作数会导致未定义的行为。
当运算符和运算符用于负操作数时,其结果难以确定。
- 运算符的优先级和结合性
最高优先级:+-(一元运算符)
*/%
最低优先级:=-(二元运算符)
- 赋值运算
求出表达式的值以后,通常需要将其存储到变量中,为了更新已经存储在变量中的值,C语言还提供了一种复合赋值运算符。
简单赋值:表达式v=e的赋值效果是求出表达式 e的值,并把此值复制到v如下面的例子所示, e可以是常量、变量更为复杂的表达式
int i=5;j=i;flaot f=34.55f;f=i
在这里,如果 的类型不同,那么赋值运算发生时会把的值转换为的类型
注意:通常我们不希望运算符修改它们的操作数,数学中的运算符就是如此表达式 不会改变的值,只是计算出的结果.
左值:目前为止,变量是已知的唯一。
复合赋值:利用变量的原有值计算出新值并重新赋值给这个变量,C语言的复合赋值运算符允许缩短这个语句以及类似的语句。
v+=e 表示v 加上e,然后将结果存储到 v中
v -=e 表示v 减去e,然后将结果存储到v 中
V *=e 表示v 乘以e,然后将结果存储到v 中
v / =e表示 v除以e,然后将结果存储到v 中
v % =e表示v 除以e取余数,然后将求余的结果存储到v 中
自增运算符和自减运算符
++自增 --自减
i++ i=i+1.(先赋值再+1 ) i-- i=i-1(先赋值再减一)
++i i=i+1(先加以再赋值) --i i=i-1(先减一再赋值)
表达式求值