【问题标题】:unsigned double in C? [duplicate]C中的无符号双精度? [复制]
【发布时间】:2015-12-02 12:01:28
【问题描述】:

我需要在 C 结构中使用 unsigned double,但我无法编译。 一个错误说:short,signed or unsigned invalid for `myvar'

这是我的代码:

#include <stdlib.h>
#include <stdio.h>

struct eReg{
   int key;
   unsigned char a;
   unsigned short int b;
   unsigned double myvar;
   }MyReg;

有谁知道怎么回事?

编辑 我不知道“无符号双精度”等于“无符号浮点数”,然后我不知道我必须找到我的问题的答案作为“C 中的无符号浮点数?”无论如何,在阅读完帖子后,我已经接受我的问题是“重复的”。我建议删除这个问题。

【问题讨论】:

  • 没有unsigned double这样的东西
  • 只使用double,删除unsigned。它不是 C 中的有效数据类型。
  • 也许你在想unsigned long long vs unsigned doubledouble 作为修饰符和类型会更有意义。我们会有longdouble long,然后是floatdouble float。我们甚至可以使用double double float 而不是decimal,因为floatdoubledecimal 都是非整数类型并不直观。 double int 然后double double int 也同样直观。然后你必须问自己“为什么 byte 不是本机类型而不是 char 推断它包含一个字符而不是一个字节?

标签: c struct


【解决方案1】:

你不能有无符号浮点类型。因此没有无符号双精度或无符号浮点数。 unsigned 只能应用于 char short int 和 long 等整数类型。我们有无符号整数的原因是它们可以存储两倍大的数字,并且更适合处理二进制数据。我真的想不出使用无符号浮点类型有什么好处。您可以获得更高的精度,但这可能不值得在硬件和软件中实现它。

【讨论】:

  • 谢谢你,我的老老师有点疯了。
猜你喜欢
  • 2011-02-01
  • 2019-06-07
  • 2015-05-17
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
相关资源
最近更新 更多