- 高效微控制器C语言编程
- (美)马克·卢瓦
- 679字
- 2025-06-05 13:36:29
2.2.5 变量赋值
在hello2.c示例中,我们依赖于对name变量的隐式赋值。作为scanf()函数的参数,用户输入的任何内容都会存储在该变量中。但我们可以(也经常)对变量进行直接赋值。可以使用等号(“=”)来表示赋值,例如:

现在,你已成功地将数值7存储到了变量total中。
你也可以随时覆盖该值:

虽然连续赋值有点浪费,但这个C代码段并没有什么问题。不过,变量total只能保留一个整数值,所以最近的赋值是最终生效的,本例中为42。
你经常会看到变量同时被定义和分配初始值(用程序员的话说就是初始化):

现在,总数和答案都有了可以使用的值,但两者仍可根据需要进行更改。这正是变量的作用。
字面量
在这些示例中,我们将简单的值插入变量,这些值被称为字面量。字面量只是一个无须解释的值。数字、单引号内的字符或双引号内的字符串都属于字面量:

希望前两个变量定义看起来很熟悉。但请注意,当我们初始化名为label的字符串时,并没有给数组设置长度。C编译器会根据我们在初始化中使用的文字推断长度。在本例中,label的长度为12个字符,其中11个字符代表“Description”(描述)中的字母,另外一个字符代表结束符'\0'。如果你知道以后在代码中会用到字符串变量,你可以给它更多的空间,但不应该指定太小的空间。

如果你尝试分配一个字符串字面量,但该字符串字面量对于char[]变量来说太长,编译器可能会发出警告:

这是一个相当特殊的错误,希望你能发现它很容易修复。顺便说一句,你的程序仍然可以运行。请注意,编译器给你的是一个警告,而不是我们在前面一些编译器问题的例子中看到的错误。警告通常意味着编译器觉得你犯了一个错误,但你可以得到提醒避免潜在错误,因此通常最好还是处理警告(并不强制)。