请解释输出。什么是%.#s
in printf()
mean?
#include<stdio.h>
#include <stdlib.h>
int main(int argc,char*argv[]){
char *A="HELLO";
printf("%.#s %.2s\n",A,A);
return 0;
}
OUTPUT:
#s HE
这是未定义的行为。#
in printf
格式说明符表示替代形式,但根据标准,#
仅与一起使用o
, a
, A
, x
, X
, e
, E
, f
, F
, g
, G
, 不包括s
.
C11 §7.21.6.1The fprintf
功能第 6 节
#
结果被转换为“替代形式”。为了o
转化,增加
精度,当且仅当必要时,强制结果的第一个数字为
零(如果值和精度都是0
, 单个0
被打印)。为了x
(or X
)
转换,非零结果有0x
(or 0X
) 作为前缀。为了a
, A
, e
, E
, f
, F
, g
, and G
转换,始终转换浮点数的结果
包含小数点字符,即使其后没有数字。 (通常,只有当小数点字符后面跟着数字时,小数点字符才会出现在这些转换的结果中。)g
and G
转换时,尾随零不会从结果中删除。对于其他转换,行为未定义。
例如,在我的机器上,输出是不同的:%.0#s HE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)