c语音打印的一些基础知识
2016-11-19 15:34
176 查看
今天在参数打印的时候,遇到了一点小问题,打印值和函数参数的传递值不一致。既然遇到问题了,那就静下心来好好的来解决问题,不管问题的大小。
问题来源:
函数参数类型 loff_t,打印时printf输出格式%x,结果不仅参数值打印错误,而且同一printf后面的值也全部打印错误。
解决:
首先这个loff_t到底是个什么数据类型要搞清楚,不断跟踪,它的最终定义为long long,这样问题的根源找到了。下面列出一些打印的常识:
1、各数据类型所占字节
32位系统下,int、long、long long所占字节数和取值范围
字节数
char: 1字节(8位)
int: 4字节 (32位,取值范围 -2^31 ~ 2^31-1)
unsigned int : 4字节 (32位,取值范围 0 ~ 2^32-1)
long: 4字节 (32位,取值范围 -2^31 ~ 2^31-1)
unsigned long : 4字节 (32位,取值范围 0 ~ 2^32-1)
long long : 8字节(64位,取值范围 -2^63 ~ 2^63-1)
取值范围
int : -2147483648 ~ 2147483647
unsigned int : 0 ~ 4294967295
long : -2147483648 ~ 2147483647
unsigned long : 0 ~ 4294967295
long long : -9223372036854775808 ~ 9223372036854775807
unsigned long long : 0 ~ 1844674407370955161
2、printf输出格式化
在printf中%d用于int或者比int小的整数类型。比int小的类型被转型成int。
%ld用于long类型,%lld用于long long类型。
%x标识的数会被当成int进行读取,所以long long类型的数如果超过int的范围会被截断,得不到正确的结果。而且因为它多占了4个字节,还会影响后面的其它标识符的输出。
另外%f标识的数会被当成double读取,即取出8个字节读取。
问题来源:
函数参数类型 loff_t,打印时printf输出格式%x,结果不仅参数值打印错误,而且同一printf后面的值也全部打印错误。
解决:
首先这个loff_t到底是个什么数据类型要搞清楚,不断跟踪,它的最终定义为long long,这样问题的根源找到了。下面列出一些打印的常识:
1、各数据类型所占字节
32位系统下,int、long、long long所占字节数和取值范围
字节数
char: 1字节(8位)
int: 4字节 (32位,取值范围 -2^31 ~ 2^31-1)
unsigned int : 4字节 (32位,取值范围 0 ~ 2^32-1)
long: 4字节 (32位,取值范围 -2^31 ~ 2^31-1)
unsigned long : 4字节 (32位,取值范围 0 ~ 2^32-1)
long long : 8字节(64位,取值范围 -2^63 ~ 2^63-1)
取值范围
int : -2147483648 ~ 2147483647
unsigned int : 0 ~ 4294967295
long : -2147483648 ~ 2147483647
unsigned long : 0 ~ 4294967295
long long : -9223372036854775808 ~ 9223372036854775807
unsigned long long : 0 ~ 1844674407370955161
2、printf输出格式化
在printf中%d用于int或者比int小的整数类型。比int小的类型被转型成int。
%ld用于long类型,%lld用于long long类型。
%x标识的数会被当成int进行读取,所以long long类型的数如果超过int的范围会被截断,得不到正确的结果。而且因为它多占了4个字节,还会影响后面的其它标识符的输出。
另外%f标识的数会被当成double读取,即取出8个字节读取。
相关文章推荐
- 操作系统的一些基础知识
- Java的一些基础知识
- 理清了3G的一些基础知识
- C++学习(1)--基础知识(1)--一些基本的格式
- [转]socket网络编程的一些基础知识
- OLAP与OLTP的一些基础知识
- 异常的一些基础知识
- java学习笔记,关于java的一些基础知识,适用于初学者,第一节
- 关于手机开发的一些比较基础的知识
- 关于继承和覆盖(Override)的一些基础知识
- 开始学习asp.net,一些基础的知识。
- 事务隔离性的一些基础知识
- 一些关于Globus的基础知识
- 模块的一些基础知识
- 计算机体系结构的一些基础知识
- 关于DNS的一些基础知识
- 一些C#方面的基础知识(转载)
- 操作系统的一些基础知识
- WIN32汇编的一些基础知识
- 自己总结C/C++的一些容易被遗忘的基础知识!