printf函数--小问题未解决

使用语言的过程实际上就是输入---处理---输出,本次主要学习标准化输出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 
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 
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 

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的问题一直未解决。。需要进一步学习。

你可能感兴趣的:(printf函数--小问题未解决)