Arrays 将int赋值给结构数组,但打印为0(不同)

Arrays 将int赋值给结构数组,但打印为0(不同),arrays,c,struct,Arrays,C,Struct,很抱歉标题不好,所以我的代码是: struct Point{ double X,Y; }; int main() { int i,j; struct Point arr[5]; for(i=0;i<5;i++){ arr[i].X=11; arr[i].Y=22; } for(i=0;i<5;i++){ printf("%d- X = %d -- Y = %d\n"

很抱歉标题不好,所以我的代码是:


struct Point{
    double X,Y;
};

int main() {
    int i,j;
    struct Point arr[5];
    for(i=0;i<5;i++){
        arr[i].X=11;
        arr[i].Y=22;
    }
    for(i=0;i<5;i++){
        printf("%d- X = %d -- Y = %d\n",i+1,arr[i].X,arr[i].Y);
    }
    getchar();
    return 0;
}
但是当我查看VSC调试部分时,我看到我的arr[0]有X和Y值,它们是正确的值。所以我假设有印刷问题,但不知道为什么

此外,我可能会错过非常大的关于结构数组和分配int到他们,但请让我知道! 谢谢

编辑:我的道歉在vsc调试屏幕上显示时没有双倍数字,所以我认为可以使用%d。。非常感谢

通过将类型错误的数据传递到
printf()
调用未定义的行为<代码>%d需要
int
,但您正在传递
双精度
。您应该使用格式说明符
%f
%g
%e
%a
来打印
双精度


在这种情况下,应使用格式说明符
%.0f
%g
在不打印点的情况下进行打印。

您的结构成员具有双
类型,但您正在使用
%d
格式说明符打印它们,这需要
int

而是希望
%f

printf("%d- X = %f -- Y = %f\n",i+1,arr[i].X,arr[i].Y);

尝试阅读
printf
的文档。字符串中的
%d
占位符应该是什么?它说什么应该是双精度的占位符?成员没有类型
float
@MikeCAT谢谢,修正了。谢谢。完全是我的错,谢谢。完全是我的错。
printf("%d- X = %f -- Y = %f\n",i+1,arr[i].X,arr[i].Y);