C语言导航 2.3常量与变量

第三节 常量与变量

  • 常量

  • 变量

2.3.1 常量

说明:在程序执行时其值不能改变的量。由于本身已隐含了数据类型,所以可以不必说明而直接使用。

使用场合:初始化、使用固定的操作数等。

一、整型常量

十进制整数:以日常所用的十进制整数形式给出,如96、-54、102等。

八进制整数:以数字0开口头的数,如036、015、045等。

十六进制整数:以0x或0X开头的数,如0xa3、0XB35、0x9c8等。

二、实型常量

说明:在计算机内以浮点数形式存放的数,其值只能使用十进制表示。

(1)十进制形式:由数码、小数点、正负号组成,如3.1415、-0.12、0.001等。

(2)指数形式:由十进制数、阶码标识、阶码组成。如3.1E5、5e-9、-6.6e+4等。

注意:十进制数为实数,阶码为整数,“+”号可以省略。

三、字符常量

说明:由一对单引号括起来的单个字符,如‘a’、‘2’、‘$’、‘(’等。

意义:字符是用其对应的ASCII码值来表示的。

转义字符:在ASCII中还有一些无法用一个字符直接表示出来的码值,因此采用了转义字符表示特殊符号。

内容:

转义字符意义码值
\n换行,光标移动到下一行行首10
\r回车,光标移动到本行行首13
\t水平制表符,以8格为单位可将光标移动到下一个Tab位置9
\0空字符,作为字符串的结束标志0
\'输出单引号 ‘39
\"输出双引号 ”34
\\输出反斜杠 \92
\?输出问号 ?63
\a响铃,发出声音7
\b退格,光标移动到前一个字符位置8
\f换页,不影响显示结果,但会影响打印机输出12
\v垂直制表,不影响显示结果,但会影响打印机输出11
\o、\oo输出八进制与之对应的ASCII字符
\xh或\xhh输出十六进制与之对应的ASCII字符

运算问题:字符常量在表达式中会转变为ASCII码码值进行处理。

四、字符串常量

说明:使用一对双引号括起来的字符序列,在存储时除了一个字符占一个字节以外,还会在尾部自动加一个转义字符‘\0’作为结束标志。

示例:

“ab\'c14” //其结果为:ab'c14

“abc\b\\d\015” //其结果为:ab\d

五、符号常量

说明:采用一个标识符来表示一个常量,并用宏定义命令#define来定义。

用法:#define 标识符 常量表达式

意义:凡在程序中出现的标识符都代表直接常量表达式,所以它不会另外分配内存。

【程序现场】2-3-1
 #include<stdio.h>
 #define N 10
 #define M N*10.5
 #define fun(x,y) x+y
 int main(void)
 {
     printf("%d,%d,%d\n",96,-52,0);
     printf("%d,%d,%d\n",036,-015,045);
     printf("%d,%d,%d\n",0xa6,-0x15,0XB1);
     printf("\n");
 ​
     printf("%f,%f,%f\n",3.14,-0.12,0.123456789);
     //注意:输出时会有四舍五入问题
     printf("%f,%f,%f\n",3.1E5,5e-4,-6.6e+4);
     printf("\n");
 ​
     printf("%c,%c,%c\n",'a','\\',67);
     printf("%s\n","ab\'c14\be");
     printf("%s\n","abc\ad\0ef");
 ​
     printf("%d,%d,%f\n",N,M,M);
     printf("fun(x,y)=%d\n",4*fun(1,2)-3);
 ​
     return 0;
 }

2.3.2 变量

说明:指在程序的运行过程中其值可以发生变化的一种数据对象。

属性:

(1)地址:变量所在存储单元的编号。其中以存放变量的第一个存储单元的地址就是变量的地址。

(2)变量名:变量所在存储单元起始地址的助记符。

(3)变量值:存储在相应存储单元中的数据。

(4)类型:变量所属类型,其决定了变量的存储方式和操作方式。

一、变量的定义

说明:在C语言中变量一定要先定义后使用。

用法:类型 变量名表

二、 变量的初始化

说明:程序对变量预先设置初值的操作。

使用方法:在定义时,采用赋值号将数据赋值给变量(参考程序现场2-3-2)。

三、指针变量定义

说明:一个用来存放数据在内存中的地址的变量,为了与其他类型变量做区分,故在变量名前加“*”作标识。

用法:*类型 变量名

四、指针变量初始化

说明:指针变量只可以存储可访问的内存,对于直接赋予标识地址的整型常量和常量的地址是非法的。因此,一般使用已定义过的变量的地址进行初始化。

使用方法:利用取地址运算符可将变量地址取出,而数组名即表示数组首元素的首地址,因此对于数组名的操作不需要取地址运算符。

【程序现场】2-3-2
 #include<stdio.h>
 int main(void)
 {
     int a;
     char b,c,d;
     printf("&a=%p\n",&a);
     printf("\n");
 ​
     int A1=10,A2=12.5;
     char B='b',C=67;
     float E1=1.2,E2=0.12345678;
     printf("A1=%d,A2=%d\n",A1,A2);
     printf("B=%c,C=%c\n",B,C);
     printf("E1=%f,E2=%f\n",E1,E2);
     printf("\n");
     
     int *p=&A1;
     printf("p=%p,*p=%d\n",p,*p);
 ​
     return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值