int i = atoi("123");unsigned long ul = strtoul("123",NulL,10);uint32_t n = mysteryfunction("123"); // <-- ???解决方法 有两个常规选项:strto [iu] max,然后检查值是否适合较小的类型,或切换到sscanf. C标准在< inttypes.h>中定义了整个宏系列.扩展到< stdint.h>的适当转换说明符类型. uint32_t的示例:
#include <inttypes.h>#include <stdio.h>int main(){ uint32_t n; sscanf("123","%"SCNu32,&n); printf("%"PRIu32"\n",n); return 0;}
(在uint32_t的情况下,strtoul溢出检查也适用于uint32_t,因为unsigned long至少为32位宽.对于uint_least32_t,uint_fast32_t,uint64_t等,它不会可靠地工作)
编辑:正如Jens Gustedt在下面所说,这并不能提供strtoul的完全灵活性,因为你无法指定基础.但是,仍然可以分别用SCNo32和SCNx32获得基数8和基数16.
总结以上是内存溢出为你收集整理的c – 对于uint32_t和其他stdint类型,atoi或strtoul相当于什么?全部内容,希望文章能够帮你解决c – 对于uint32_t和其他stdint类型,atoi或strtoul相当于什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)