【问题标题】:Different float variables in C giving different sizesC中不同的浮点变量给出不同的大小
【发布时间】:2014-05-14 09:04:51
【问题描述】:

这可能是一个非常“noob-ish”的问题,但我已经通过互联网搜索并找不到答案。我知道在 C 中,每种类型的变量都有不同的大小:

char   : 1 byte
short  : 2 bytes
int    : 4 bytes
long   : 4 bytes
float  : 4 bytes
double : 8 bytes

但是,例如,我声明了一个 tpye float 的变量 a 和一个也是 float 类型的变量 b。现在假设变量a 关联了一个浮点数,例如130.25,而b 关联了5.5。现在,考虑到浮点数是 4 个字节长,一旦我将它们各自的值关联起来,ab 肯定不会是相同的大小。那是对的吗?或者变量的大小是否相同,而不管它们的值如何?

【问题讨论】:

    标签: c floating-point size byte


    【解决方案1】:

    变量的大小取决于它的类型,而不是它的值。

    两个float 变量的大小将始终相同,无论其中存储的值如何。

    注意你可以这样做例如:

    float a;
    float b;
    
    if(sizeof a == sizeof b)
      printf("a and b have the same size\n");
    

    即使变量的值是未定义,上述内容也是有效的。这是因为sizeof 可以在编译时评估,因此根本不依赖于实际值。这是值不影响变量大小的另一个证明。

    【讨论】:

    • 感谢您的回答。您能否向我解释一下,为什么在尝试将浮点变量复制到定义为char[40]char 类型的缓冲区中时,我只能存储到某个浮点值?例如,我可以存储值 1550.55 的浮点数,但不能存储 2000.45 的值。
    • @Adam 我很想尝试,请发布一个单独的真实问题,包括您尝试过的代码。像这样的问题是错误的评论,它应该是一个真正的问题。
    • 会的。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 2019-11-06
    相关资源
    最近更新 更多