首页UC › sizeof的32位和64位兼容问题

sizeof的32位和64位兼容问题

问题:
linux下编写一个普通的打印语句:

编译时会得到如下的warning:


源码:

问题原因
这是因为我的系统是64位的,sizeof返回的size_t类型定义为long unsigned int.

而对32位系统,不会产生该warning。因为32为的size_t类型是unsigned int.
那如果程序需要在32和64位系统保持兼容性,不希望产生该warning,如何处理呢?

问题解决
1.强制转换size_t为unsigned int. 这种方式可以去掉warning,但有截断,只能是权宜之计。
2.原来printf已经为该兼容性定义了新的格式字符z。
修改源代码:

再编译,32位和64位系统都不会有warning。

发表评论