C语言非常道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1 变量的初始化

在原先的程序中,我们先是声明了变量n和sum,然后用两条语句将它们的存储值分别修改为1和0。

然而,C语言允许我们在声明n和sum的时候分别指定一个初始值。如此一来,我们就不再需要用两条语句来显式地修改变量的存储值。以下是程序的最新版本。

              /*****************c0301.c******************/
              unsigned long long int cusum(unsigned long long int r)
              {
                  unsigned long long int n = 1, sum = 0;
                  while(n <= r)
                  {
                    sum = sum + n;
                    n = n + 1;
                  }

                  return sum;
              }

              int main(void)
              {
                  unsigned long long int res = cusum(1000);
              }

请注意,相较于以前的版本,函数cusum内的声明部分已经改变,声明之后的两条语句也已经被移除。在变量n和sum的声明中,标识符n和sum分别用“=”连接了一个指定初始值的成分,这个成分叫作初始化器。

在main函数内,变量res的声明里也有一个初始化器cusum(1000),这显然是一个函数调用表达式。

注意,我们是在讨论声明而不是表达式,符号“=”并不是数学里的等号或者等于,也不是赋值表达式里的赋值运算符,这是一种新的用法,其含义可理解为“来自”。

初始化器的作用是在变量创建时,自动地为它赋予一个初始的值。初始化器可以是表达式,比如这里的0、1和cusum(1000)。注意,并不是所有的变量在声明时都可以有初始化器,函数参数的声明里不得含有初始化器。这就是说,参数r的声明不允许用“=”连接一个初始化器,这是C语言的规定。

练习3.1

实验一下,如果为函数cusum的参数r添加一个初始化器,会怎么样?