C 语言字面量2025 年 7 月 19 日 | 阅读 11 分钟 在 C 语言编程中,字面量是分配给常量变量的常量值。我们可以说字面量表示不能修改的固定值。它也包含内存,但没有像变量那样的引用。基本数据类型,如字符串、字符、浮点数和整数,都有其底层值,这些值被称为字面量。这些值在编译期间被赋值,并在整个执行过程中保持不变,因此被称为“常量”或“常数值”。 C 语言中字面量的类型C 语言中主要有五种字面量。它们如下所示 ![]() 接下来,我们将逐一讨论这些字面量。 1) 整数字面量在C 语言编程中,整数字面量是一种只表示整数类型值的数字字面量。它表示的值既不包含小数部分也不包含指数部分。它们可以由 0x 或 0X 前缀,表示为 10 进制、8 进制或 16 进制。它们还可以用正负修饰符标记,例如 U(无符号)、L(长整型)或 LL(长长整型)。有效的示例包括 100、075 或 0x1F。它们广泛用于数组大小、循环、计数器以及其他需要整数常量的数值运算。 此外,它们还可以带有正负修饰符,例如 U(无符号)、L(长整型)或 LL(长长整型)。有效的例子包括 100、075 或 0x1F。它们广泛用于数组大小、循环、计数器以及其他需要整数常量的数值运算。 例如 整数字面量的类型(基于数字系统)C 语言中有多种整数字面量。其中一些如下所示 十进制数(基数 10) 它通过表示 0 到 9 之间的数字来定义。例如,45、67 等。 八进制数(基数 8) 它被定义为以 0 开头,后面跟着数字 0、1、2、3、4、5、6、7 的数字。例如,012、034、055 等。 十六进制数(基数 16) 它被定义为以 0x 或 0X 开头,后面跟着十六进制数字(即 0 到 9 的数字,(a-z) 或 (A-Z) 的字母字符)的数字。 后缀(类型修饰符)C 语言中有几个后缀字面量如下所示
接下来,我们将逐一讨论 C 语言中的这些后缀字面量。 无符号整数字面量 在 C 语言中,它是一个符号限定符,表示整数的类型为无符号。无符号限定符只包含正值。它以后缀 U 或 u 结尾。它还确保编译器将该值视为无符号整数。 长整数字面量 在 C 语言中,长整数字面量是一个大小限定符,它将整数类型的大小指定为长整型。它通常用于 32 位或 64 位系统。 无符号长整数字面量 在 C 语言编程中,这些字面量用于表示符合无符号长整型数据类型范围的非负整数。如果我们想存储大的正整数而不使用任何负值,它会非常有用。它以后缀 UL、ul 等结尾。 长长整数字面量 在 C 语言中,它用于表示比长整型更大的整数。如果我们处理非常大的整数值,特别是在长整型为 32 位且不能容纳 64 位值的系统上,它会非常有用。它以后缀 LL 或 ll 结尾。 无符号长长整数字面量 在 C 语言中,这些字面量是常量,用于表示范围非常大的非负整数。当我们需要存储比有符号整数所能容纳的值更大的值时,主要会用到它们。它以后缀 ULL、ull 结尾。 整数字面量的 C 语言示例 让我们看一个例子来说明 C 语言中的整数字面量。 示例编译并运行输出 Decimal: 100 Octal (012): 10 Hexadecimal (0x1A): 26 Unsigned: 30 Long: 22 Long Long: 35 说明 在此示例中,我们演示了不同类型的整数字面量,例如十进制、八进制和十六进制值,以及无符号整型、长整型和长长整型等变体。之后,它使用合适的格式说明符(例如 %d、%u、%ld 和 %lld)打印每个值以获得正确的输出。 2) 浮点字面量在 C 语言编程中,它是一种只包含浮点值或实数的字面量。这些实数包含多个部分,例如整数部分、实数部分、指数部分和小数部分。浮点字面量必须以十进制或指数形式指定。可以使用科学计数法,例如 2.5e2(等于 250),或标准十进制计数法,例如 3.14 来表示它们。如果使用浮点字面量,我们必须记住以下几点 十进制形式 在十进制形式中,我们必须包含小数点、指数部分或两者。如果它不包含其中任何一个,那么编译器将抛出错误。十进制表示法可以加上 '+' 或 '-' 符号作为前缀,指定正数和负数。 浮点字面量的十进制形式示例 指数形式 当我们要表示一个具有大数量级的数字时,指数形式非常有用。它包含两部分,即尾数和指数。例如,数字是 2340000000000,它可以表示为 2.34e12 的指数形式。 指数表示法中实数字面量的示例 浮点字面量的 C 语言示例 让我们看一个例子来说明 C 语言中的浮点字面量。 示例编译并运行输出 Float: 3.140000 Double: 2.718280 Scientific: 1500.000000 说明 在此示例中,我们演示了浮点字面量:一个浮点型(后缀 f)、一个双精度型(十进制的默认值)和一个科学计数法表示的值(1.5e3,等于 1500)。之后,它使用 %f 和 %lf 格式说明符来正确显示这些值。 3) 字符字面量在 C 语言编程中,字符字面量包含一个用单引号括起来的单个字符。如果将多个字符分配给变量,我们需要创建一个字符数组。如果尝试在变量中存储多个字符,将生成多字符字符常量的警告。 字符字面量的表示 在 C 语言中,有几种表示字符字面量的方法。其中一些如下所示
例如 C 语言中字符字面量的示例 让我们看一个例子来说明 C 语言中的字符字面量。 示例编译并运行输出 Character: A Newline character is executed now End 说明 在此示例中,我们演示了字符字面量,例如普通字符 ('A') 和转义字符 ('\n' 表示换行符)。之后,它使用 %c 格式说明符打印字符,并显示换行符如何在执行期间将输出移动到新行。 4) 字符串字面量在 C 语言编程中,字符串字面量表示用双引号括起来的多个字符。它包含一个附加字符,即 '\0'(空字符),该字符会自动插入。此空字符指定字符串的终止。我们可以使用 '+' 符号来连接两个字符串。 由于字符串字面量是常量,因此在程序执行期间无法修改它们。此外,字符串字面量可能包含转义序列,例如 \n、\t 和 \\。尽管在 C 语言中字符数组或指针用于字符串操作,但字符串字面量是这些操作的基本组成部分。 例如 C 语言中字符串字面量的示例 让我们看一个例子来说明 C 语言中的字符串字面量。 示例编译并运行输出 String 1: Hello, C! String 2: Line1 Line2 说明 在此示例中,我们演示了字符串字面量,其中 str1 存储一个简单字符串,str2 包含一个转义序列 (\n) 以在新行上打印。之后,printf 函数中使用 %s 格式说明符打印字符串内容。 5) 布尔字面量C99 标准通过包含头文件添加了布尔字面量,它们表示真值。_Bool 是两个布尔字面量(true(非零)和 false(零))的类型。这些字面量有助于提高代码可读性并阐明逻辑表达式。if (is_valid == true) 更具表达性,它返回 1 或 0。布尔类型的添加使得编写条件和逻辑函数的返回值现在变得更容易且不易出错。它定义在 <stdbool.h> 头文件中。 例如 C 语言中布尔字面量的示例(C99 及更高版本) 让我们看一个例子来说明 C 语言中的布尔字面量。 示例编译并运行输出 Online: 1 Empty: 0 说明 在此示例中,我们演示了 C 语言中的布尔字面量。这里,我们使用了两个布尔函数,即 isOnline 和 isEmpty,分别设置为 true 和 false。之后,我们使用 printf() 函数打印 isOnline 和 isEmpty 函数的值,其中 true 表示 1,false 表示 0。 C 语言中所有字面量的区别C 语言中这些字面量之间存在一些差异。其中一些如下所示
C 语言中字面量的优点C 语言中字面量有几个优点,如下所示
C 语言中字面量的缺点C 语言中字面量有几个缺点,如下所示
结论总而言之,字面量是 C 语言的基本构建块,直接用于代码中表示固定值。它们增强了程序的清晰度,提高了效率,并简化了逻辑控制和变量初始化,此外还有各种类型,包括字符、字符串、整数和浮点数。C 语言提供了多样化的字面量集,以适应各种编程需求。 C 语言中字面量的常见问题1) C 语言中的字面量究竟是什么? 在 C 语言中,字面量是直接插入代码中的常量值。它可以表示固定数据,如数字 (10, 0x1A)、字符 ('A')、浮点数 (3.14)、字符串 ("Hello") 或布尔值 (C99+ 中的 true, false)。字面量在构建时评估,在程序运行时不能修改。 2) C 语言中整数字面量有哪些不同类别? 整数字面量可以表示为
它们还可以使用后缀,例如 U、L 和 LL,以及 UL、ULL 等组合。 3) C 语言中的变量和字面量有什么区别? 在 C 语言编程中,添加到源代码的固定值称为字面量 (100, 'X', 3.14)。程序运行时其值可能发生变化的已分配存储位置称为变量 (int x = 100;)。字面量作为常量,仅在分配或使用时才需要内存。 4) C 语言中的字面量会导致溢出吗? 在 C 语言编程中,如果字面量大于其默认数据类型的大小,则可能溢出并导致意外行为。例如,如果未带适当后缀分配大整数,则可能出现截断或负值。使用适当的后缀(LL、ULL 等)以避免这种情况。 5) 为什么我们要在 C 语言中使用带 U、L 和 LL 等后缀的整数字面量? 后缀定义字面量的数据类型
它确保了正确的类型处理并避免溢出或警告。例如,10000000000 应该使用 LL 才能适应 64 位类型。 下一主题C 语言中的标记 |
我们请求您订阅我们的新闻通讯以获取最新更新。