数据的表现形式——字面常量与变量

首先,依旧是前情提要,也是博主这段时间的学习感受。只有接触这门知识,去深入了解,去全面了解,才知道自己也就学了个九牛一毛。其实也不是不能接受,我知道C语言有难度,也知道自己只是一个初学者,但是经过网上的学习,本以为基础至少打得不错。今天在大学里上课,听了老师的课,看了系统教育的书,知道自己说自己是初学者都有些狂妄了,纯纯C语言爱好者的水平了,连门都没进去。果然只有知道事物的全貌,才有资格评价,今后我将以更谦虚的姿态来学习这门学科。

那么,进入这一次的主题-----字面常量与变量

在计算机高级语言中,数据有两种表现形式:常量与变量

先说常量与变量的概念

一、常量从名字上可以一窥这个概念的基础意义,恒常不变的量。即在程序运行过程中,其值不能被改变的量称为常量。

现在我们只说字面常量
常用的字面常量有以下几类:

(1)整型常量。如100、-189、0等都是整型常量。

(2)实型常量。有两种表示形式:

a. 十进制小数形式,由数字和小数点组成(也可被称作浮点型常量)。如123.678、0.567、-43.78等

b. 指数型式。如12.34e3(代表12.34×10的3次方)、-347.77e-28(代表-347.77×10的-28次方)

注意:e或E之前必须有数字,且e或E之后必须为整数。

(3)字符常量。有两种形式的字符常量:

a. 普通字符,用单撇号括起来的一个字符,如'a'、'B'、'0'、'?'等。

注意:单撇号只是界限符,字符常量只能是一个字符,不包括单撇号。且'a'、'A'是不同的字符常量。

b.转义字符(重要内容)是以反斜杠 \ 开头的特殊字符序列,用于表示无法直接输入的字符(如换行、制表符等)或具有特殊含义的字符(如引号、反斜杠本身)。以下是常见的转义字符及其作用:

转义字符完整对照表

转义字符名称作用描述示例与输出效果
\'单引号 (Single Quote)输出单引号字符 'printf("\'"); → '
\"双引号 (Double Quote)输出双引号字符 "printf("\""); → "
\\反斜线 (Backslash)输出反斜线字符 \printf("C:\\Files"); → C:\Files
\a响铃 (Alert)触发系统响铃或闪烁提示printf("\a"); → 控制台响铃
\b退格 (Backspace)光标左移一格,覆盖前一个字符printf("A\bB"); → B
\f换页 (Form Feed)打印机换页(控制台通常无效果)用于打印文档分页
\n换行 (Newline)光标移动到下一行开头printf("A\nB"); → A
B
\r回车 (Carriage Return)光标移动到当前行开头(覆盖行首内容)printf("123\rAB"); → AB3
\t水平制表符 (Tab)光标移动到下一个制表位(通常4或8空格)printf("A\tB"); → A B
\v垂直制表符 (Vertical Tab)光标下移一行并保持列对齐(现代少用)用于早期终端对齐
\0空字符 (Null)表示字符串的结束符char s[] = "Hello\0"; → Hello
\ooo八进制ASCII码输出对应八进制值的ASCII字符\101 → A(ASCII 65)
\xhh十六进制ASCII码输出对应十六进制值的ASCII字符

\x41 → A(ASCII 65)

(4)字符串常量用双撇号括起来的若干个字符,字符串常量通常为双撇号内的所有字符(不包括双撇号本身)。如"china"、"123"。

注意:单撇号内只能包含一个字符,而双撇号可以包含一个字符串。

(5)符号常量。通过 #define指令指定符号名称代表常量。例如:

  #define PI 3.1416                                     // 注意行末没有分号

预编译时,符号常量(如 `PI`)会被替换为字面常量(3.1416)。  

符号常量的优点:  
1. 含义清晰:符号名称应“见名知义”(如PI代表圆周率),避免直接使用难以理解的数值(如 sum = 15*30*23.5*43)。  
2. 便于统一修改:若程序中多次使用同一常量,修改符号常量定义即可全局生效。

注意事项:  
a. 符号常量不是变量,不占用内存。  
b. 需区分符号常量与变量,避免混淆。  

小结:其实上面的大部分可以统称字面常量

定义:直接在代码中写出的固定值。

示例:整型:100-5 ; 浮点型:3.14-0.5 ; 字符型:'A''\n' ; 字符串:"Hello World"

作用:直接表示数据的值,无需变量名。

二、变量:从名字上也同样可以一窥这个概念的基础意义,可以改变的量。即程序内存中的一块命名空间,用于在程序运行过程中保存、修改和传递值。就是在程序运行过程中,变量的值是可以改变的。

注意:变量必须先定义,后使用。在定义时指定该变量的名字和类型。一个变量应该有一个名字,以便被引用。

首先,变量分为局部变量和全局变量,在写代码的时候会有一个符号{},这个符号便是区分二者的关键。在{}里的是局部变量,反之在{}外的就是全局变量。

接下来,然我们来结合实例说明特殊的情况,也方便诸位的理解。

仔细看这一串代码

#include<stdio.h>
 
int  main(){
     int a=10;
     int a=100;
return 0;
}

是的,看着很奇怪。这是一个错误的代码,因为在同一个范围内,同一变量只能出现一次,不能被重复定义。

接下来再看

include<stdio.h>
int a=100
int  main(){
    
int a=10;
printf("a=%d\n",a);
return 0;
}

是的,这行代码也很怪。但这是一个对的代码,可能无法运行,大概是编译器的问题。结果如下:

没有显示为a=100。为什么?因为当全局变量与局部变量命名相同的情况下,局部优先,但是一般不建议全局变量与局部变量名字一样

在这里就讲完本章了,还有一些特殊情况,就视博主的学习情况而决定是否讲解了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值