nar*_*ndy 0 c printf format-specifiers
printf函数int到%f,浮动到%d试图实验
#include<stdio.h>
int main(){
int i=10;
float x=43.2892f;
printf("i=%f x=%d \n",i,x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
i=43.289200 x=10
Run Code Online (Sandbox Code Playgroud)
需要帮助来理解为什么这些变量是互换的?
You*_*You 13
你正在做什么调用未定义的行为1,但是在具有System V AMD64 ABI的平台上使用GCC 查看生成的程序集,我们可能会提出一个假设.浮点值在寄存器(SSE寄存器)中传递,而整数在寄存器(通用寄存器)中传递.据推测,您的实现要求在SSE寄存器中传递浮点数,并将整数传递到通用寄存器中,并且只需在遇到第一个寄存器时选择要读取的寄存器(反之亦然).xmm0
esi
printf
xmm0
%f
1 未定义的行为不必是"随机"或"每次都不同".在这种情况下,未定义的行为非常一致.未定义的行为甚至可能正是您期望发生的行为; 但是在升级编译器时它也可能会改变.