📜  C中的字面量

📅  最后修改于: 2020-10-21 08:08:05             🧑  作者: Mango

什么是字面量?

字面量是分配给常量变量的常量值。我们可以说字面量代表无法修改的固定值。它还包含内存,但没有引用作为变量。例如,const int = 10;是一个常量整数表达式,其中10是整数字面量。

字面量类型

C编程中存在四种类型的字面量:

  • 整数字面量
  • 浮点字面量
  • 字符字面量
  • 字符串字面量

整数字面量

它是一个数字字面量,仅表示整数类型值。它既不表示分数,也不表示指数。

可以通过以下三种方式指定它:

十进制数(以10为底)

通过表示0到9之间的数字来定义。例如45、67等。

八进制数(以8为底)

它定义为一个数字,其中0后跟数字,例如0、1、2、3、4、5、6、7。例如012、034、055等。

十六进制数(以16为底)

它定义为一个数字,其中0x或0X后跟十六进制数字(即,从0到9的数字,从(az)或(AZ)的字母字符)。

以下两个符号限定符为整数字面量加上后缀:

L或l:这是一个大小限定符,它指定整数类型的大小为long。

U或u:这是一个符号限定符,表示整数的类型为unsigned。无符号的限定词仅包含正值。

注意:不考虑限定符的顺序,即lu和ul相同。

让我们看一个简单的整数字面量示例。

#include 
int main()
{
    const int a=23;  // constant integer literal
    printf("Integer literal : %d", a);
    return 0;
}

输出量

Integer literal : 23

浮点字面量

它是仅包含浮点值或实数的字面量。这些实数包含整数部分,实数部分,指数部分和小数部分等部分的数量。浮点字面量必须以十进制或指数形式指定。让我们简要地了解这些形式。

小数形式

小数形式必须包含小数点,指数部分或两者。如果其中不包含任何一个,则编译器将引发错误。十进制符号可以以“ +”或“-“符号为前缀,以指定正数和负数。

十进制浮点字面量的示例包括:

1.2, +9.0, -4.5

让我们看一个简单的示例,以十进制形式表示浮点字面量。

#include 
int main()
{
    const float a=4.5; // constant float literal
    const float b=5.6; // constant float literal
    float sum;
    sum=a+b;
    printf("%f", sum);
    return 0;
}

输出量

10.100000

指数形式

当我们要表示数量很大的数字时,指数形式很有用。它包含两个部分,即尾数和指数。例如,数字为2340000000000,并且可以以指数形式表示为2.34e12。

指数形式的float字面量的语法

[+/-]   [+/-] 

指数符号形式的真实字面量的示例包括:

+1e23, -9e2, +2e-25

创建指数符号的规则

以下是用于以指数表示法创建浮点字面量的规则:

  • 以指数表示法,尾数可以十进制或小数形式指定。
  • 指数既可以大写也可以小写,即e和E。
  • 我们可以在尾数和指数之前使用正负两个符号。
  • 不允许有空格

字符字面量

字符字面量包含一个用单引号引起来的单个字符。如果将多个字符分配给变量,那么我们需要创建一个字符数组。如果我们尝试在一个变量中存储多个字符,则将生成多字符字符常量的警告。让我们通过一个例子观察这种情况。

#include 
int main()
{
    const char c='ak';
    printf("%c",c);
    return 0;
}

在上面的代码中,我们在单引号中使用了两个字符,即“ ak”。因此,此语句将生成警告,如下所示。

警告产生:

main.c:6:18: warning: multi-character character constant
      [-Wmultichar]
    const char c='ak';
main.c:6:18: warning: implicit conversion from 'int' to 'char'
      changes value from 24939 to 107 [-Wconstant-conversion]
    const char c='ak';
               ~ ^~~~
2 warnings generated.
? ./main

字符字面量

字符字面量可以通过以下方式表示:

  • 可以通过在单引号内指定一个字符来表示。例如,“ a”,“ b”等。
  • 我们可以在单引号中指定转义序列字符来表示字符字面量。例如,“ \ n”,“ \ a”,“ \ b”。
  • 我们还可以使用整数形式的ASCII来表示字符字面量。例如,ascii值为65为“ A”。
  • 八进制和十六进制符号可用作表示字符字面量的转义序列。例如,“ \ 023″,“ \ 0x12″。

字符串字面量

字符串字面量表示用双引号引起来的多个字符。它包含一个附加字符,即’\ 0′(空字符),该字符会自动插入。此空字符指定字符串。我们可以使用’+’符号来连接两个字符串。

例如,

String1 =“ javatpoint”;

String2 =“ family”;

要连接以上两个字符串,我们使用’+’运算符,如以下语句所示:

“ javatpoint” +“ family” = javatpoint系列

注意:如果我们表示一个字符,即’b’,则该字符将占据单个字节,因为它是字符字面量。并且,如果我们用双引号“ b”表示字符,则它将占用更多字节,因为它是字符串字面量。