#include <stdio.h>
int main()
{
float x;
x=(int)(float)(double)(5.5);
printf("%#u",x);
return 0;
}
How the #
printf 中的标志在这里起作用吗?
每次运行此代码时,我都会得到不同的(垃圾)值。
我知道#
标志仅适用于o , 0x, 0X, e, E, f, g, G
但是当它没有为整数定义时。
那么这是一个不明确的行为?当我使用上述标志时,我得到了正确的值。
那么请告诉我我是对还是错。
来自c11标准。
7.21.6.1。第6页:
#:
结果被转换为“替代形式”。对于 o 转换,它增加
精度,当且仅当必要时,强制结果的第一个数字为
零(如果值和精度均为 0,则打印单个 0)。对于 x(或 X)
转换时,非零结果的前缀为 0x(或 0X)。对于 a、A、e、E、f、F、g,
和 G 转换,始终转换浮点数的结果
包含小数点字符,即使其后没有数字。 (通常,一个
仅当数字为小数点字符时,这些转换的结果中才会出现小数点字符
)对于 g 和 G 转换,尾随零不会从
结果。对于其他转换,行为未定义.
因此,为了澄清,使用#
with u
未定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)