d浮点小问题
float z = 85886696878585969769557975866955695.E0;
//整溢出.
real x = 0x1p-16383;
//不能表示该数.
它是为了支持UFCS
(通用函数调用语法).D兼容C
的想法是,当代码有不同
含义时,不要*安静*
破坏代码.因此,这些,在D中会生成
错误消息(尽管错误消息
还可改进).
那么,ImportC
可工作吗?
test2.c:
float z = 85886696878585969769557975866955695.E0;
long double x = 0x1p-16383;
//dmd -c test2.c
//不能表示`0x1p-16383`.
第1个与ImportC
编译的一样.不可表示,截断为0.ImportC
似乎应接受,如果接受,是否误导用户,这是非0
?
这是判断问题.
如果定义
了正确的函数,它可安静
破坏代码.以下示例在C和D
中有效(导入/包含
除外),但打印
出不同的值:
// #include <stdio.h>
import core.stdc.stdio;
int E2(int i)
{
return i;
}
int main()
{
float f = 123.E2;
printf("%f\n", f);
return 0;
}
除了基本的C不兼容
外,如字面
不是选项,需要关于歧义
的警告.
用ImportC
编译与用D
编译相同代码
,却结果不同.真是坑.
real x = 0x1p-16383L;
//这样,就可以了,加个L.
天哪
,这就解决了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现