Sco*_*zer 2 c floating-point gcc
我注意到这段代码编译但我不明白为什么:
int main() {
double z = 0.000000000000001E-383DD;
}
Run Code Online (Sandbox Code Playgroud)
但我不确定DD
数字的末尾是什么意思.我看过标准,但没有提到这一点.
我从以下命令获得了这个数字:
$ gcc -dM -E - < /dev/null
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __DEC64_DEN__ 0.000000000000001E-383DD
...
Run Code Online (Sandbox Code Playgroud)
这可能是GCC扩展吗?
其他扩展名后缀:
复杂的文字,例如1.0i
,1.0j
,1.0fi
等,这纯粹是GCC延伸和标准C99的方法是使用宏I
(1.0*I
,1.0f*I
等)
其他浮点类型,纯粹是GCC扩展:
1.0w
→ __float80
(80位二进制浮点)1.0q
→ __float128
(128位二进制浮点)十进制浮点类型,它基于提议N1312:扩展编程语言C以支持十进制浮点运算:
1.0df
→ _Decimal32
(32位十进制浮点数)1.0dd
→ _Decimal64
(64位十进制浮点数)1.0dl
→ _Decimal128
(128位十进制浮点数)定点类型,基于提议N1169:支持嵌入式处理器的扩展:
0.5hr
,0.5r
,0.5ulr
等→ _Fract
类型(具有大小≤1个固定点类型)5.0hk
,5.0k
,5.0ulk
等→ _Accum
类型(固定点类型) 归档时间: |
|
查看次数: |
1098 次 |
最近记录: |