您的位置:首页 > 编程语言 > C语言/C++

socket通信时尽量使用stdint.h中定义的整数类型

2013-02-28 23:28 369 查看
今天在写一个socket通信时碰到一个诡异的问题。客户端C发送一个long类型的数据,服务端S接收后打印,总是错误的数值。

排查了很久后找到了原因,客户端C是32位的操作系统,而服务端是64位的操作系统。

在这两种操作系统中long数据类型所占的内存大小不一致,为了避免这种情况,我们需要用到在头文件stdint.h中定义的一些数据类型。

下面我们详细介绍一下关于stdint.h的一些内容。

stdint.h是什么

stdint.h是c99中引进的一个标准C库的头文件.

stdint.h干什么

stdint.h中定义了一些整数类型,规则如下(其中N可以为8,16,32,64)

intN_t, int_leastN_t, int_fastN_t表示长度为N位的整型数;

uintN_t, uint_leastN_t, uint_fastN_t表示长度为N位的无符号整型数 ;

stdint.h中的常量,定义以上各类型数的最大最小值(其中N可以为8,16,32,64)

INTN_MIN, UINTN_MIN, INTN_MAX, UINTN_MAX ;

INT_LEASEN_MIN, INT_LEASEN_MAX ;

INT_FASTN_MIN, INT_FASTN_MAX ;

以上类型的C++类型定义等

大数输出

int64_t数的输出:%lld ;

uint64_t数的输出:%llu ;

uint64_t数十六进制输出:%llx ;

uint64_t数八进制输出:%llo ;

本文转载自:http://www.mysql100.com/c/c_error_list/2013/0227/335.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言