c语言 - 无法设置结构变量的值



我有一个在四元数.c 中定义的结构

typedef struct quaternion{
double arr[4];
} quaternion;

带有头文件

#ifndef QUATERNIONS_H
#define QUATERNIONS_H
typedef struct quaternion{
double arr[4];
} quaternion;
#endif

由于这是我第一次使用C结构,所以我尝试对其进行测试。

#include <stdio.h>
#include "quaternions.h"

int main(){
quaternion a;
a.arr[1]=2.5;
printf("%dn",a.arr[1]);
return 0;
}

据我所知,我所做的和这篇文章几乎一模一样。然而,当我编译并运行它时,它会打印一个随机的胡言乱语数字。我做错了什么?

double的正确printf转换格式说明符是%f,而不是%d。有关详细信息,请参阅该功能的文档。

你应该更改线路

printf("%dn",a.arr[1]);

至:

printf("%fn",a.arr[1]);

通过使用错误的转换格式说明符,您的程序正在调用未定义的行为。这解释了为什么您的程序正在打印";随机胡言乱语";而不是期望的输出。

如果使用了错误的转换格式说明符,大多数优秀的编译器都会发出警告。如果编译器没有警告您,那么我建议您确保已启用所有警告。有关更多信息,请参阅此问题:

为什么我应该始终启用编译器警告?

最新更新