当前位置:  开发笔记 > 编程语言 > 正文

关于不兼容的printf格式说明符的问题

如何解决《关于不兼容的printf格式说明符的问题》经验,为你挑选了0个好方法。

我只是浏览了printf的手册页,我发生了一些事情.我想知道这里是否有任何"语言律师"可以回答一个相对简单的问题:-P.

所以't'修饰符定义为

以下整数转换对应于ptrdiff_t参数.

那么,如果将它与无符号整数转换相结合,应该会发生什么?显然o,u,x和X都被解释为无符号值,而d和i是有符号的.

同样,除了之外,所有修饰符都有签名/无符号版本(int/unsigned int,size_t/ ssize_t等)ptrdiff_t.

在实践中,没有任何不好的事情发生,因为无符号版本的类型占用与签名版本相同的空间量.所以关于字节的权利会从堆栈中弹出.

事实上,没有任何"坏"发生,事实上,在打印所有测试的东西的预期值,除了" INT_MIN"(假设sizeof(int) == sizeof(ptrdiff_t).

printf("%tu %td\n", INT_MIN, INT_MIN);

版画

2147483648 -2147483648

在32位系统上.

标准对此有何看法?我认为答案将是"未定义的行为".但我想我会问;).

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有