一个特定的C编程风格问题?

Jic*_*hao 0 coding-style

我听过很多关于编程风格的重要性.在我看来,缩进很容易处理.但其他事情让我很沮丧.考虑一个特定的例子来演示inet_makeaddr的使用.

/* demonstrate the use of host address functions */
#include <stdio.h>
#include <arpa/inet.h>
#include <netinet/in.h>

int
main(void)
{
 /* inet_makeaddr demo */
 uint32_t neta = 0x0a3e5500;
 uint32_t hosta = 0x0c;

 struct in_addr alla = inet_makeaddr(neta, hosta);

 printf("makeaddr of net: %08x and host: %08x = %08x\n", 
    neta, hosta, alla);

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

有人可能想写如下:

 uint32_t neta;
 uint32_t hosta;
 struct in_addr alla;

 neta = 0x0a3e5500;
 hosta = 0x0c;
 alla = inet_makeaddr(neta, hosta);
Run Code Online (Sandbox Code Playgroud)

然后其他人可能总是在定义时初始化变量:

 uint32_t neta = 0;
 uint32_t hosta = 0;
 struct in_addr alla = {0};

 neta = 0x0a3e5500;
 hosta = 0x0c;
 alla = inet_makeaddr(neta, hosta);
Run Code Online (Sandbox Code Playgroud)

这些中的任何一个比其他的更好,还是个人品味?

Chr*_*isW 5

我认为三个例子中的第一个是最好的:第二个例子有未初始化的变量,第三个例子有变量初始化为无意义(零)值.我更喜欢在我定义变量时初始化变量(具有有意义的值)(这样我就没有未初始化的变量).另请参见本地变量初始化是否必须?

  • 第三个是浪费; 将变量设置为0然后覆盖该赋值没有任何好处.编译器可能会省略零 - 但它可能不会. (2认同)