首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法设置结构变量的值

无法设置结构变量的值
EN

Stack Overflow用户
提问于 2022-06-24 01:12:58
回答 1查看 44关注 0票数 0

我有一个以四元数定义的结构。

代码语言:javascript
复制
typedef struct quaternion{
        double arr[4];
} quaternion;

带有头文件

代码语言:javascript
复制
#ifndef QUATERNIONS_H
#define QUATERNIONS_H

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

#endif

因为这是我第一次使用C结构,所以我尝试测试它。

代码语言:javascript
复制
#include <stdio.h>
#include "quaternions.h"
        
int main(){
        quaternion a;
        a.arr[1]=2.5;
        printf("%d\n",a.arr[1]);
        return 0;
}

据我所知,我所做的几乎与这篇文章完全相同。但是,当我编译和运行这个程序时,它会输出一个随机的乱码。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-24 01:16:01

正确的printf转换格式说明符是double%f,而不是%d。有关该函数的更多信息,请参见文档

你应该换行

代码语言:javascript
复制
printf("%d\n",a.arr[1]);

至:

代码语言:javascript
复制
printf("%f\n",a.arr[1]);

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

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

为什么我总是要启用编译器警告?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72738074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档