一、常量和变量
1.常量
常量用来表示数据的值,它在程序运行期间其值是不可改变的。
常量有两种表示形式:值常量和符号常量。
<1>值常量
值常量,也称为直接常量或字面值,即直接以输入输出字面值表示。
例如:
“a”、45、2.3,’demo‘等。
值常量在程序中可以直接使用。
<2>符号常量
符号常量,也称为宏,是用一个标识符来代表一个常量。符号常量和值常量不一样,它不能直接使用,要遵循”先定义,后使用“的原则。即符号常量在使用前要先作明确的定义,然后才能在程序中代替常量使用。
2.变量
变量是在程序运行期间其值可以改变的量。变量有三个属性:变量名、变量的数据类型和变量值。
变量名说明变量的名称,变量名的命名应遵循标识符的命名规则。
变量的数据类型决定了变量值的数据类型、表现形式和分配存储空间的大小,同时也规定了对该变量能执行的操作。
变量值为变量存储的数据,通过变量名引用变量的值。
程序中要使用的变量必须”先定义,后使用“,这样做以便让系统在运行时为变量分配相应的存储单元,用以存放变量的值。
定义变量的一般形式:
数据类型说明符 变量名;
基本数据类型的类型说明符:
数据类型 | 类型说明符的简写形式 |
---|---|
基本整型 | int |
短整型 | short |
长整型 | long |
无符号整型 | unsigned |
无符号短整型 | unsigned short |
无符号长整型 | unsigned long |
单精度实型 | float |
双精度实型 | double |
字符型 | char |
例:
int num; /*整型变量*/
char c1, c2; /*字符型变量*/
float f1, f2; /*单精度实型变量*/
double area; /*双精度实型变量*/
在程序中使用变量时,变量必须要有确定的值,否则系统以一个不确定的值参与操作,因此,在定义变量时可以给变量赋一个初值,即对变量进行初始化。
例:
int x = 1,y = 2;
如果给变量x和y赋予了新的值,那么它们存储单元内原数据值就会改变。一个变量只能有一个确定的值。当变量赋予新值时,原来的值就会被新值取代。
说明:
- 允许一个数据类型说明符后定义多个类型相同的变量,各变量名之间用逗号隔开。
- 在定义变量时,类型说明符和变量名之间至少用一个空格分隔。
- 定义变量放在使用变量之前,一般放在函数体的开头部分。
- C语言允许在定义变量的同时为所需要初始化的变量赋予初值,并且可以为多个同类型的变量赋同一初值,但要分别赋给各个变量。
例:
int x = y = 10;
这是错误的。应该这样写:int x = 10, y = 10;
二、 C语言中的数据
一、整型数据
1.整型常量
整型常量就是整数。
整数有三种表示形式:十进制整数、八进制整数、十六进制整数。
<1>十进制整数
用(0~9)10个数字表示。
例如:12, 66,-78等。
<2>八进制整数、
以0开头,用(0~7)8个数字表示。
例如:014, 0101, 01777等。
<3>十六进制整数
以0X或0x开头,用(09)10个数字。AF或a~f字母表示。
例如:0xC,0x44, 0xEFFF等。
八进制和十六进制一般用于表示无符号整数。
整数又可分为基本整型、长整型、短整型、无符号整型等。
长整数用后缀”L“或”l“来表示。
例如:12L,012l,0x12l等。
无符号整数用后缀”U"或“u”表示。
例如:15U,017u,0x153等。
#include<stdio.h>
int main() {
int a = 20, b = 027, c = 0x3f;
printf("十进制:%d,%d,%d\n", a, b, c);
printf("八进制:%o,%o,%o\n", a, b, c);
printf("十六进制:%x,%x,%x\n", a, b, c);
return 0;
}
结果:
输出时,八进制不输出前导符0,十六进制不输出前导符0x。
2.整型变量
在C语言中,整形变量分为基本整型、短整型、长整型和无符号型。无符号型又可以与前三种类型组合出无符号基本整型、无符号短整型和无符号长整型,总共有六种类型。
变量类型名 | 类型说明符 | 所占字节数 | 取值范围 |
---|---|---|---|
短整型 | short int(short) | 2 | -32768~32767 |
基本整型 | int | 4 | -2147483648~2147483647 |
长整型 | long int(long) | 4 | -2147483648~2147483647 |
无符号短整型 | unsigned short int | 2 | 0~65535 |
无符号基本整型 | unsigned int | 4 | 0~4294967295 |
无符号长整型 | unsigned long int | 4 | 0~4294967295 |
int main() {
printf("短整型占%d个字节\n", sizeof(short));
printf("基本型占%d个字节\n", sizeof(int));
printf("长整型占%d个字节\n", sizeof(long));
printf("无符号短整型占%d个字节\n", sizeof(unsigned short));
printf("无符号基本型占%d个字节\n", sizeof(unsigned));
printf("无符号长整型占%d个字节\n", sizeof(unsigned long));
return 0;
}
结果:
sizeof(类型说明符)
或 sizeof(常量)
其值为类型说明符指定类型数据或某变量在内存中所占的字节数。
注意:
在定义变量时,要注意不同类型的取值范围,当其值超出了最大取值范围时,就会产生“溢出”错误。
二、字符型数据
1.字符常量
字符常量用单引号括起来的单个字符来表示。
例如:‘a’, ‘A’, '+'等。都是合法的字符常量。
字符常量在计算机中是以ASCII码值存储的。因此,每个字符都有对应一个ASCII码值。
字符常量有以下特点:
- 字符常量只能用单引号括起来,不能用双引号或其他括号。
- 字符常量只能是一个字符,不能是多个字符或字符串。
- 字符常量可以是字符集中的任意字符。
在C语言中,还有一种特殊的字符常量称为“转义字符”。转义字符主要用来表示那些不可视的打印控制字符和特定的功能字符。
转义字符以反斜杠“\”开头,后跟一个或几个字符。
转义字符具有特定的含义,不同于字符原有的意义。
C语言中常用的转义字符
转义字符 | 意义 | ASCII码 |
---|---|---|
\n | 换行(Newline) | 010 |
\t | 横向跳到下一个制表位置(相当于Tab) | 009 |
\v | 竖向跳格(Vertical) | 011 |
\b | 退格(Backspace) | 008 |
\r | 回车(Return) | 013 |
\f | 走纸换页(From Feed) | 012 |
\ \ | 反斜线符“\” | 092 |
\ ` | 单引号符 | 039 |
\ " | 双引号符 | 034 |
\a | 鸣铃报警(Alert) | 007 |
\0 | 空格符 | 000 |
\ddd | 1~3位八进制所代表的字符 | 1~3位八进制数 |
\xhh | 1~2位十六进制所代表的字符 | 1~2位十六进制数 |
注意:
转义字符中的字母只能使用小写字母。
2.字符串常量
字符串常量是由一对双引号括起的字符序列组成。
例如:“Hello”, “C Language Programming”, "1000 $"等都是合法的字符串常量。
字符串常量和字符常量的主要区别:
- 字符常量用单引号作为定界符,字符串常量用双引号作为定界符。
- 字符常量只能是单个字符,字符串常量则可以含零个、一个、多个字符。字符串常量所含字符的个数,称为字符串的长度。
- 可以把一个字符常量赋给字符型变量,但不能把一个字符串常量赋给字符型变量。在C语言中,没有字符串型变量。
- 字符常量占一个字节的内存空间,字符串常量占的内存字节数等于字符串中字符的个数加1(在存放字符串时,每个字符串的末尾增加了一个字符串结尾符“\0”。该结尾符作为字符串的结束标志)。
3.字符型变量
字符型变量用来存放字符常量,即存放一个字符。
字符型变量的类型说明符是 char
。
例如:
char c1, c2; //定义变量c1,c2为字符型变量
char ch1 = 'A', ch2 = 'a'; //变量ch1的初值为字符A,变量ch2的初值为字符a
在C语言中字符型数据和整型数据之间可以通用,即:
允许对整型变量赋以字符值;
允许对字符变量赋以整型值;
允许对字符变量按整型量输出;
允许把整型量按字符量输出;
允许整型量和字符量相运算。
三、实型数据
1.实型常量
实型常量就是实数,也称浮点数。在C语言中,实型常量有两种表示形式:十进制小数形式和十进制指数形式。
<1>十进制小数形式
由数字0~9和小数点组成。
例如:
0.0,.123, 12.34,-12.45等。
注意:实数的小数形式必须有小数点的存在。
- 和 0 ,12. 和 12是两种不同类型的量,前者是实型量,后者是整型量,它们的存储形式和运算功能不同。
<2>指数形式
指数形式又称科学计数法。由整数部分、小数点、小数部分、E(或e)和整数阶码组成。其中阶码可以带正负号。
例如:
1.2x10^5可写成实数指数形式为:1.2E5或1.2E+5
1.2x10^(-5)可写成实数指数形式为:1.2E5或1.2E-5
错误例子:
E3 E之前无数字
12.-E3 负号位置不对
2.0E 无阶码
2.5E1.6 阶码必须是整数
2.实型变量
实型变量也称浮点型变量。
浮点型变量分为单精度型、双精度型和长双精度型。
变量类型名 | 类型说明符 | 所占字节数 | 有效数字位数 |
---|---|---|---|
单精度型 | float | 4 | 7 |
双精度型 | double | 8 | 16 |
长双精度型 | long double | 10 | 19 |
四、符号常量
定义符号常量的一般形式为:
#define 标识符常量
其中:标识符(宏名)被定义为符号常量,其值为后面的常量值。习惯上,符号常量使用大写字母形式。
例:求半径为r的圆面积、圆周长和圆球体积。
#include<stdio.h>
#define PI 3.1415926
int main() {
float r, s, c, v;
printf("请输入半径值:\n");
scanf_s("%f",&r);
s = PI * r * r;
c = 2 * PI * r;
v = 4.0 / 3.0 * PI * r * r * r;
printf("s = %f\n", s);
printf("c = %f\n", c);
printf("v = %f\n", v);
return 0;
}
结果: