小编Jac*_*ack的帖子

现代通用计算机的C11中FLT_RADIX是不是2?

这几乎是我在标题中的问题.对于其他任何使用它似乎完全不自然.

在研究这个时,我发现有基础10的硬件支持的历史例子,以及IBM POWER6和系统z9的更现代的例子.即使在这些情况下,我也不知道FLT_RADIX在任何主流C编译器中是否会出现10.

我特别关注的是,我正在编写一个只能在通用计算机上运行的应用程序的代码,而且我想知道我是否可以在FLT_RADIX==2没有严重关注的情况下静态断言,就像我目前静态断言一样!(unsigned char)256.

c floating-point c11

5
推荐指数
1
解决办法
541
查看次数

sizeof 应用于数组类型

c11 标准规定 sizeof,

“当应用于具有数组类型的操作数时,结果是数组中的字节总数”

  • (6.5.3.4,第 4 点)。

脚注(103)说:

“当应用于声明为数组或函数类型的参数时,sizeof 运算符会生成调整后(指针)类型的大小”。

我从中得出,当应用于数组类型时, sizeof 给出数组的大小(元素数量 x 元素大小),但应用于声明为数组类型的参数时,它给出指针的大小。

我的问题:

由于脚注,如何可能有一个不产生指针大小的数组类型对象?

我觉得在某些情况下,如果不知道这一点,我就无法相信操作符的大小。

谢谢。

编辑:我想我应该澄清我的担忧,如果定义了“int a[4]”,那么我从响应中看到 sizeof a==4*sizeof(int) ,但是 sizeof(a+0) 呢?看来 sizeof(a+1) 必须被评估为指针。我关心的是除了函数调用之外的数组衰减为指针的情况。

c arrays sizeof c11

4
推荐指数
2
解决办法
2316
查看次数

标签 统计

c ×2

c11 ×2

arrays ×1

floating-point ×1

sizeof ×1