在C语言中,您拥有"%c"
和"%f"
类似函数的printf
和scanf
格式标志。这两个函数都使用可变长度参数...
,它始终将floats
转换为doubles
,将chars
转换为ints
。
我的问题是,如果发生此转换,为什么会存在char
和float
的单独标记?为什么不使用与int
和double
相同的标记?
相关问题:
Why does scanf() need "%lf" for doubles, when printf() is okay with just "%f"?
答案 0 :(得分:10)
因为打印方式不同。
printf("%d \n",100); //prints 100
printf("%c \n",100); //prints d - the ascii character represented by 100
答案 1 :(得分:0)
因为float
和double
具有不同的机器表示或大小,以及调用约定:许多处理器都有专用于浮点的寄存器,可用于参数传递。
C标准要求将short
个参数转换为int
,并将float
个参数转换为double
。