首页 > 解决方案 > 为什么只在声明后才为变量赋值

问题描述

知道肯定有重复,但我什么也没找到。在 C 语言中,我看到很多代码示例,其中作者只在变量声明后赋值,这样做有充分的理由吗?

int main(void)
{
    int x; // declare "x"
    x = 5; // assign 5 to "x"

    return 66;
}

这与仅在一行中声明和分配值有什么不同?

int main(void)
{
    int x = 5; // declare "x" and assign in the same line

    return 66;
}

标签: cvariables

解决方案


这些天主要是风格问题。在许多情况下,在变量第一次使用时为变量赋值更不容易出错,并且可能尽可能接近第一次使用时。

另一方面,我当然也见过这样的情况,即当算法没有点缀引入新变量的语句时,它更容易理解。在算法主体之前收集所有这些语句可以使算法本身适合单个页面/屏幕。

在这样的结构中为变量分配初始值似乎毫无意义:

int foo;
if (bar == 42)
  foo = 1;
else
  foo = -1;

推荐阅读