如果`char`转换为`int`,为什么``%c'`存在于`printf`中?

时间:2012-01-21 09:09:27

标签: c printf variadic-functions

在C语言中,您拥有"%c""%f"类似函数的printfscanf格式标志。这两个函数都使用可变长度参数...,它始终将floats转换为doubles,将chars转换为ints

我的问题是,如果发生此转换,为什么会存在charfloat的单独标记?为什么不使用与intdouble相同的标记?

  

相关问题:
  Why does scanf() need "%lf" for doubles, when printf() is okay with just "%f"?

2 个答案:

答案 0 :(得分:10)

因为打印方式不同。

printf("%d \n",100); //prints 100
printf("%c \n",100); //prints d - the ascii character represented by 100

答案 1 :(得分:0)

因为floatdouble具有不同的机器表示或大小,以及调用约定:许多处理器都有专用于浮点的寄存器,可用于参数传递。

C标准要求将short个参数转换为int,并将float个参数转换为double