使用语言的过程实际上就是输入---处理---输出
,本次主要学习标准化输出printf() 标准化输出
、scanf() 标准化读入
以及进一步简单的控制因素等。
printf() 函数
printf()函数是包含在头文件的stdio.h
中,使用的格式主要为:
printf("格式化字符串", 输出的参数)
printf格式化输出的一般形式
%c: 输出单个字符
%d: 输出十进制形式的整数
%e/E: 输出指数形式的单双精度实数,默认是6位小数
%f: 输出小数形式的单双精度实数,默认是6位小数
%o: 以八进制形式输出无整数符号
%s: 输出字符串,参数为char的指针(什么是指针?)
%u: 输出十进制形式的无符号整数
%x/X: 输出十六进制的无符号整数
%%: 表示输出的是百分号
printf输出的应用实例
- 简单输出整数
printf("%d",10)
- 依据最小宽度输出
%nd:其中n是具体的阿拉伯数字,这是规定最小的输出的宽度。
#include <stdio.h>
void main(void)
{
int x=1,y=2;
printf("%4d%4d\n",x,y); /* 测试输出的两个参数是不是需要分开*/
float z=-200;
printf("%10ld\n",z); /* 发现当定义的数据类型和需要的类型不一致,格式化输出不会报错 */
}
例如上面的例子,输出的结果是:
1 2
140424125706240 /* 显然这个是错误的输出形式 */
-
char函数输出字符---存在疑惑
本来打算使用char 输出单个字符的使用,但是依据代码:
#include <stdio.h>
int main()
{
char c="d";
printf("%s\n",c);
}
上述代码总是输出错误,我是用gcc编译的,然后报错语句是:
P05.printf.c: In function ‘main’:
P05.printf.c:5:8: warning: initialization makes integer from pointer without a cast [enabled by default]
char c="d";
^
通过搜索,发现一种写法是可以通过的,但是具体的原因是不清楚的:
#include <stdio.h>
int main () {
char greeting[] = "H";
printf("Greeting message: %s\n", greeting );
return 0;
}
显然上面的过程存在一个不懂的地方,目前还是不能够解决掉,等等看后面是否能够解决。
- 输出浮点数
这样的输出需要注意的是单精度浮点数和双精度浮点数是不同的,其中单精度浮点数有效位数为7位,若一个数字太大,有8位整数部分和6位小数部分,那么两个这样的数相加,他们的个位
实际上就是不准的了,这样会产生很大的计算误差。
双精度浮点数的有效的位数是16位,所以这样产生的数字就是16个数字时准确的。
此外输出的过程还可以通过%e选择科学技术法的形式,非常有用。
两个字符串的输出方式
- puts()
- putchar()
其中,puts是可以输出字符串带上换行符。putchar也是输出字符串的,但是我看,仅为输出单个字符串。没什么特别。
** notes:本次书写中有个输出单个字符串的char的问题一直未解决。。需要进一步学习。