1 混合运算
类型强制转换场景
整型数进行除法运算时,如果运算结果为小数,那么存储浮点数时一定要进行强制转换。例子:
#include <stdio.h>
//运算强制转换
int main(void) {
int i=5;//整型
float j=i/2;//这里做的是整型运算,因为左右操作数都是整型,其中“/”表示取整数部分
float k=(float)i/2; //将(float)i作为一个整体,称之为强制类型转换后的表达式
printf("%f\n",j);
printf("%f\n",k);
return 0;
}
#include <stdio.h>
//运算强制转换
int main(void) {
int i=5;//整型
float j=i/2;//这里做的是整型运算,因为左右操作数都是整型,其中“/”表示取整数部分
float k=(float)i/2; //将(float)i作为一个整体,称之为强制类型转换后的表达式
float c=1/3;//“/“取整符号,得到0,将整型0转换为float类型
float d=(float)1/3;//float类型的变量返回值就包含小数部分,如果定义的变量是int类型,则只能返回整数部分
printf("float j=i/2: \n j=%f\n",j)
printf("float k=(float)i/2: \n k=%f\n",k);
printf("float d=1/3: \n c=%f\n",c);
printf("float d=(float)1/3: \n d=%f\n",d);
return 0;
}
2 printf函数的介绍
printf函数可以输出各种类型的数据,包括整型,浮点型,字符型,字符串型等,实际原理是printf函数将这些类型的数据格式化为字符串后,放入标准输出缓冲区,然后将结果显示到屏幕上。
语法上:
#include <stdio.h>
//不声明也可以运行,但是编译器会给警告
int printf(const char *format,...);
printf函数根据format给出的格式打印输出到stdout(标准输出)和其他参数中。
字符串格式(format)由两部分组成:显示到屏幕上的字符和定义printf函数显示的其他参数,我们可以指定一个包含文本在内的format自负床,也可以是映射到printf的其他参数的特殊字符
#include <stdio.h>
//练习printf
int main(void) {
int age=21;
printf("hello %s,you are %d years old\n","Bob",age);
return 0;
}
其中,%s表示在该位置插入首个参数(一个字符串),%d表示第二个参数(一个整数)应该放在哪里。不同的%codes表示不同的变量类型,也可以限制变量的长度。printf函数的具体代码格式:
%c 字符
%d 带符号整数
%f 浮点数
%s 一串字符
%u 无符号整数
%x 无符号十六进制数,用小写字母
位于%和格式化命令之间的一个整数被称为最小字段宽度说明符,通常会加上空格来控制格式。
·用%f精度修饰符指定想要的小数位数。例如,%5.2f会至少显示5位数字并带有2位小数的浮点数。
·用%s精度修饰符简单地表示一个最大的长度,以补充句点前的最小字段长度。
printf函数的所有输出都是右对齐的,除非在%符号后放置了符号,例如:%5.2f会显示5位字符,两位小数位的浮点数并且左对齐。
例子:printf函数输出对齐
#include <stdio.h>
//练习printf
int main(void) {
int a=10;
float b=98.3;
printf("student number=%d,score=%f\n",a,b);
int i=100;
float f=96.03;
printf("student number=%d,score=%f\n",i,f);
printf("\n");
//如果我们知道最长的学号是3的位置,那我们%d哪里就可以加个3
printf("student number=%3d score=%5.2f\n",a,b);
printf("student number=%3d score=%5.2f\n",i,f);//5代表整个浮点数所占的是5个位置,2表示保留到小数点后2位
printf("\n");
printf("student number=%-3d score=%5.2f\n",a,b);//默认是右对齐,加一个负号表示左对齐
printf("student number=%-3d score=%5.2f\n",i,f);
printf("%10s\n","hello");
return 0;
}