c – 在Solaris 9上的printf uint_64?

c – 在Solaris 9上的printf uint_64?,第1张

概述我有一些使用sprintf的c()代码将uint_64转换为字符串.这需要便携式到 linux和Solaris. 在linux上,我们使用%ju,但在Solaris上似乎没有任何相似之处.我找到的最接近的是%lu,但是这会产生不正确的输出.一些示例代码: #include <stdio.h>#include <sys/types.h>#ifdef SunOStypedef uint64_t 我有一些使用sprintf的c()代码将uint_64转换为字符串.这需要便携式到 linux和Solaris.

在linux上,我们使用%ju,但在Solaris上似乎没有任何相似之处.我找到的最接近的是%lu,但是这会产生不正确的输出.一些示例代码:

#include <stdio.h>#include <sys/types.h>#ifdef SunOStypedef uint64_t u_int64_t;#endifint main(int argc,char **argv) {    u_int64_t val = 123456789123L;#ifdef SunOS    printf("%lu\n",val);#else    printf("%ju\n",val);#endif}

在linux上,输出是预期的;在Solaris 9上(不要问),它是“28”

我可以用什么

解决方法 如果您有inttypes.h可用,您可以使用它提供的宏:
printf(  "%" PRIu64 "\n",val);

不漂亮(我似乎在说很多最近),但它的作品.

总结

以上是内存溢出为你收集整理的c – 在Solaris 9上的printf uint_64?全部内容,希望文章能够帮你解决c – 在Solaris 9上的printf uint_64?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1254301.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存