整数有多大?

时间:2010-10-15 07:25:53

标签: c

计算int的字节数的正确方法是什么?以及如何将int写入文件描述符?

这是一个模拟代码示例,可能会明确我想要实现的目标:

char *message = "test message";
int length = strlen(message);
int fd = open(file, O_CREAT|O_RDWR);
write(fd, length??, ??); // <--- what goes here
write(fd, message, length);

我不关心平台独立性和字节顺序,只是它可以在尽可能多的平台上编译。

4 个答案:

答案 0 :(得分:9)

sizeof(length)进入该领域。

如果您以后更改sizeof(int)的类型,则优于使用length

sizeofsizeof(char)的倍数表示数据类型的大小,该值始终为1.

答案 1 :(得分:2)

sizeof是你的朋友。

write(fd, &length, sizeof(int));

答案 2 :(得分:2)

sizeof(int)= 4(在Linux,32&amp; 64 Bit x86-Architecture上)
sizeof(long)是32位上的4位,64位上的8位(在Linux上,x86-32 / 64-Architecture)
关于Windows的Dunno。

答案 3 :(得分:0)

write(fd, &length, sizeof(length));

您可以将sizeof与变量名称或类型名称一起使用。在这种情况下,您可以完成sizeof(int)

write函数获取您要写入的内存区域的地址,因此您使用&(地址)运算符。您不必为字符串执行此操作,因为您已经有一个指针(char*)。