c语言 long double 输出格式,c++ 什么是`long double`的格式说明符

我正在开发适用于各种口味Unix和Windows 32位和64位操作系统的应用程序.

我使用长双倍数据类型,当我做sprintf()和使用长的double与%lf在它然后它工作正常与Windows不给任何种类的错误,但在Solaris平台上它提供核心转储.

相同问题的示例代码如下.

void main(){

string size = "16622";

string sizeFact = "20";

long long sizeLongLong = strtoll(size);

int factInt = atoi(sizeFact);

long double sizeLongDouble = (long double) sizeLongLong/pow(2, factInt);

char buf[512];

sprintf(buf, "%.3lf %s", sizeLongDouble, "str");

}

如上所述,代码在Windows 32位和64位上工作正常,但是对于sprintf,它在Solaris上给予了核心.

我尝试在sprintf中的类型转换它工作正常.

sprintf(buf, "%.3lf %s", (double) sizeLongDouble, "str");

长双倍格式说明符是什么?

我在这里做的错误是什么,我使用错误的格式说明符,因为它是核心的?

为什么要在sprintf()中再次输入一次?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值