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 次 |
| 最近记录: |