代码之家  ›  专栏  ›  技术社区  ›  Jay

整数有多大?

c
  •  4
  • Jay  · 技术社区  · 15 年前

    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 回复  |  直到 15 年前
        1
  •  9
  •   wkl    15 年前

    sizeof(length) 去野外。

    sizeof(int) length 未来。

    sizeof sizeof(char) ,始终为1。

        2
  •  2
  •   shodanex    15 年前

    sizeof是你的朋友。

    write(fd, &length, sizeof(int));
    
        3
  •  2
  •   Stefan Steiger Marco van de Voort    15 年前


    sizeof(long)在32位上是4,在64位上是8(在Linux上,x86-32/64体系结构)
    不知道窗户的事。

        4
  •  0
  •   src    15 年前
    write(fd, &length, sizeof(length));
    

    你可以用 sizeof sizeof(int) .

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