C 语言中的字面量和常量


2021年8月23日, Learn eTutorial
2004

在本教程中,您将了解 C 语言中的字面量和常量。通过简单的示例,您还会注意到字面量和常量之间的细微差别。

C 中的字面量是什么?

在 C 编程中,常量和字面量是指在程序过程中固定不变的值。我们经常混淆常量和字面量的识别,因为它们之间只有一线之隔。字面量本身就是常量值。例如:

int X = 10;
printf(“ Learn C through Learn eTutorials!”); 

这里的数字“10”和“Learn C through Learn eTutorials”都是字面量。

C 中的不同类型的字面量

在 C 编程中,字面量主要分为四种类型:

  1. 整型字面量
  2. 浮点型字面量
  3. 字符字面量
  4. 字符串字面量

整型字面量

C 中的整型字面量是仅表示整型值的数值。不能表示小数或指数值。整型字面量有三种类型:

整型字面量 示例
十进制字面量 10,3369,555u
八进制字面量 036,099,024L
十六进制字面量 0xdEbL,0x5Au

 

当您观察以上示例时,您可以看到以下发现:

  • 没有前缀且基数为 10 的字面量称为**十进制整数**。
  • 以“0”为前缀的字面量表示该数字是**八进制整数**。数字的基值为 8。
  • 以“0x”为前缀的字面量表示**十六进制数字**。数字的基值为 16。十六进制数字包含数字和字母。

附加限定符的整型字面量

符号限定符(U 或 u):附加在字面量后面,表示该值为无符号整数类型。
大小限定符 L 或 l:附加在字面量后面,表示整数类型的大小为长整型。
 
另一个重要特性是,整型字面量中使用的所有字母都不区分大小写,即“x”和“X”或“e”和“E”都表示相同的意思。

浮点型字面量

浮点型字面量是指包含小数或指数数字的字面量。这些字面量主要有两种类型:实数和复数。实数包含以下部分:

I. 整数部分
II. 实数部分
III. 小数部分
IV. 指数部分

浮点型字面量可以有两种形式表示:

浮点型字面量形式 示例
十进制形式 +10.50, -3.3, 6.19
指数形式 +1.6e28, -2.4e12, 3.4e-25

字符字面量

C 中的字符字面量是用单引号括起来的单个字符。

char x ='a'; 

在这个例子中,单个字符“a”存储在变量(或地址)x 中,因此“a”只不过是一个字符字面量。

当我们尝试将多个字符存储到字符变量中时,编译器会发出警告,指出多字符字符常量,如下面的代码片段所示。

单个字符的字符字面量

#include <stdio.h&rt;
int main()
{
 char v = 'v';
 printf("%c",v);
} 

输出

v

多个字符的字符字面量

#include <stdio.h&rt;
int main()
{
 char v = 'var';
 printf("%c",v);
} 

输出

r

C 程序不仅处理简单字符,还处理特殊的转义序列。例如,`\t` 代表制表符,`\n` 代表将光标移到下一行。

字符串字面量

正如字母在 C 语言中构成单词一样,字符数组在 C 中称为字符串。因此,字符串由字符、转义序列、符号和空格组成。

C 中的字符串字面量是用双引号括起来的字面量。例如:

x = “Learn”;
y = “C programming”; 

在此示例中,x 和 y 是存储字符串字面量“Learn”和“C Programming”的字符串变量。

注意:‘C’为字符字面量分配空间,而“C”为字符串字面量分配空间。

C 中的常量是什么?

C 中的常量是其值在定义后无法更改的变量。在编程中,使用常量而不是字面量是一个好习惯。

假设您正在为银行软件编写一个程序,其中最低余额为 1000 卢比。您可以定义一个常量,例如“min_bal”,并为其赋值 1000。这样,在程序后期,您就不必一遍又一遍地调用该值。而是可以在需要时调用常量“min_bal”。此外,还有未来修改的机会。假设银行决定将最低余额提高到 2500 卢比,您无需更改所有整数字面量。您需要做的就是转到声明常量的那一行,并将值“1000”替换为“2500”。这就是程序员总是偏爱常量而非字面量的原因。

如何在 C 中定义常量?

常量可以通过两种方式定义:

  • 使用 #define 预处理器
  • 使用 const 关键字。

使用 #define 预处理器

‘#define’ 的工作方式类似于函数,通过声明常量名称并一次性赋值,而不使用“=”。

语法是:

#define constant_name constant_value 
// Example
#define pi 3.14 

以下示例将说明使用 #define 预处理器来赋值常量:

#include <stdio.h>
#define a 5
#define b 6
#define jump '\n'
main()
{
       int c;
       c=a+b;
       printf("The sum is %c %d",jump,c);
       getch();
}

输出

The sum is 
11

使用 const 关键字

‘const’ 是一个简单的关键字,您可以使用以下语法声明常量:

 const  data_type  c 
// Example
const float pi = 3.14; 

因此,与预处理器不同,这里我们必须在末尾加上分号 (;) ,因为‘const’声明被视为一个语句,并且使用赋值运算符“=”为常量赋值。上面的程序可以这样编写:

#include <stdio.h&rt;
const int a = 5;
const int b = 6;
const char jump= '\n';

main()
{
       int c;
       c=a+b;
       printf("The sum is %c %d",jump,c);
       getch();
}

输出

The sum is 
11