一.混合运算
类型强制转换场景
整型数进行除法运算时,如果运算结果为小数,那么存储浮点数时一定要进行强制类型转换,请看下面例子
#include <stdio.h>
int main() {
int i=5;
float f=i/2; //这里做的整型运算
printf("%f\n",f);
return 0;
}
输出:2.000000 ,而不是2.5
原因:
除号左边的数是左操作数,右边的数是右操作数.这里左操作数是整型变量,右操作数是整型常量,所以做的整型计算 |
强制类型转换:
#include <stdio.h>
int main() {
int i=5;
float f=(float)i/2; //强制类型转换
printf("%f\n",f);
return 0;
}
输出:2.500000
二.printf函数介绍
printf函数可以输出各种类型的数据,包括整型、浮点型、字符型、字符串型等,实际原理是printf函数==将这些类型的数据格式化为字符串后==,放入标准输出缓冲区,然后将结果显示到屏幕上。
printf 函数根据format给出的格式打印输出到stdout(标准输出)和其他参数中.
字符串格式(format)由两部分组成:显示到屏幕上的字符和定义printf 函数显示的其他参数.我们可以指定一个包含文本在内的format字符串,也可以是映射到 printf 的其他参数的“特殊”字符。
如下列代码所示:
int age = 21;
printf("Hello %s, you are %d years old\n", "Bob", age);
代码的输出如下:
Hello Bob, you are 21 years old
其中,%s表示在该位置插入首个参数(一个字符串),%d表示第二个参数(一个整数)应该放在哪里。不同的%codes表示不同的变量类型,也可以限制变量的长度.printf函数的具体代码格式如下表所示。
位于%和格式化命令之间的一个整数被称为最小字段宽度说明符,通常会加上空格来控制格式.
- 用%f精度修饰符指定想要的小数位数.例如,%5.2f会至少显示5位数字并带有2位小
数的浮点数. - 用%s精度修饰符简单地表示一个最大的长度,以补充句点前的最小字段长度.
==printf 函数的所有输出都是右对齐的==,除非在%符号后放置了负号。例如,%-5.2f 会显示5位字符、2位小数位的浮点数并且==左对齐==.
下面来看一个例子,如下面例子所示.
【例】printf 函数输出对齐
#tinclude <stdio.h>int main()
{
int i=10;float f=96.3;
printf("student number=%3d score=%5.2f\n",i,f);
printf("student number=%-3d score=%5.2f\n",i,f);
printf("%10s\n" ,"hello");
}
总结:
%3d 表示占3位,%5.2,代表占5位保留2位小数 |
执行结果如下图所示,可以看到整型数10在不加负号时靠右对齐,加负号时靠左对齐,%10s代表字符串共占用10个字符的位置.因为 printf 函数默认靠右对齐,所以"hello"字符串相对于左边的起始位置有5个空格的距离.掌握这些内容后,在做OJ作业时,就会很容易掌握打印格式的控制.
student number= 10 score=96.30
student number=10 score=96.30
hello