1.字符是C语言的最基本的元素
2.标识符 只能是由字母、数字、下划线组成的字符串,并且第一个字符必须是字母或者下划线。
在标识符中,大小写是有区别的;
标识符不能与关键字同名,也不能与系统预先定义的标准标识符同名。
//和 /* ....*/
1. 常量:常量在程序执行过程中,其值不发生变化。
a、符号常量:
#define PI 3.14 main() { float aera; aera=10*10*PI; } |
PI是一个标识符代表一个常量,成为符号常量,他的值是不会改变的,也不能被赋值,比如:PI=3.1415;这是错误的。
符号常量用大写,变量名用小写。
b、const类型修饰符
Const类型修饰符必须放在它所修饰的类型名之前,用const修饰的标识符为常量。
比如: Const float PI=3.14; 或者 float const PI=3.14;
2.变量:一个变量必须有一个名字(变量名),在内存中占据一定的存储单元,在该单元中存放着变量的值。变量名在程序运行中是不会改变的,而变量值是变化的。变量名是以各种标识符。先定义,后使用
int 2个字节
Short int 2个字节
Long int 4个字节
Unsigned interface 2个字节 无符号整型变量
Unsigned short 2个字节
Unsigned long 4 个字节
a、十进制表示形式: 比如:0.0 .25 5.789 0.13 5.0 300. -267.8230
b、指数形式:加阶码标识“e”或者“E”,比如: 2.1E5(2.1*10的5次方),3.7E-2(3.7*10的-2次方)。
以下是非法的实数:
345,E7,-5,53.-E3,2.7E
c、单精度float,占4个字节,只能提供7位有效数字。
d、双精度double 占8个字节,提供16位的有效数字。
e、实型常量不分单精度和双精度。一个实型常量可以赋给一个float或double型变量,根据变量的类型截取实型常量中相应的有效位数字
#include<stdio.h> void main() { float a; double b; a=54321.54123; b=54321.12345612345678; printf("a=%f\nb=%f\n",a,b); } |
a是单精度浮点型,有效位数是7位,整数占了5位,小数54之后的2969均是无效数字。
b是双精度的,小数后最多保留6位,其余部分四舍五入。所以运行结果显示的b的最后一位是7而不是6.
(1)字符常量是字符集(ASCII码)中的字符
字符常量都是用单引号括起来的一个字符。不能用双引号等。比如:‘a’‘=’。
数字被定义成字符型之后就不再是原来的数值了。‘5’是字符常量,而5是整型常量。而且,只要是单引号引起来的都是一个字符。‘ABCD’是一个字符
#include<stdio.h> void main() { int a='5'; int b=97; printf("a=%d\nb=%c\n",a,b); } |
为什么a会是53呢,而b却成了a呢? 关键就是想要输出的类型不同了,a=%db=%c
很明显a的结果是整型而b 的结果是字符型。A=’5’,现在的5是字符,在ASCII中字符‘5’所代表的十进制ASCII码正好是数字53,而十进制ASCII数字97正好代表的是字符a。
(2)转义字符
转义字符具有特定的意义,不同于其它字符。常用的转义字符如下;
\n 换行 \0 空字符 通常用于字符串结束标志 ,需要注意的是,这儿的0是数字零 而不是字母o . \r 回车(不换行) |
(1)字符变量用来存放字符常量。
定义:char a;
(2) C语言中允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时既可以把整型按字符数据输出,也可以把字符按整型数据输出。比如;
#include<stdio.h> void main() { char a,b; //定义字符类型变量a和b a='x'; //把字符‘x’赋给a,此时a的整型值为字符‘x’所对应的值,即120 b='y'; //把字符'y' 赋给b,此时b的整型值为121 a=a-32; //此时的a的值为88,而对应的字符是大写的X b=b-32; //此时的b的值为89,对应的字符是大写的Y printf("%c,%c\n%d,%d\n",a,b,a,b); //分别用字符和整型输出a和b 的值 } |
(3) 从上述程序中也可以看出,字符是可以参与运算的,比如:’a’=’A’+32。
(1)字符串常量是由一对双引号括起来的字符序列。比如: ”china”, ”&12.5654”
(2)定义: char string=”My name is zhaoyuqiang”;
(3)字符与字符串的区别:
a、‘a’是字符,“a”是字符串。
b、“a”=’a’+’\0’.。 意思是说,字符串就是多个字符合起来,然后最后加一个空格符。
也就是字符串常量占的内存空间字节数等于字符串中字符位数加1,增加的那一个字符就是存放空字符‘\0’的。
c、char a=’a’,b; b=a; //把一个字符常量赋给了一个字符变量,这是完全可以的。
char string=“asdfg”,b; b=a; //把一个字符串常量赋给了一个字符变量,这是错误的。
(1)枚举类型:这种类型变量的取值只能限于事前已经一一列举出来的值的范围。
(2)用关键字enum定义枚举类型。
enum weekday {sun,mon,tue,wed,thu,fri,sat};
weekday是枚举类型名,可以用于定义变量,比如:enum weekday week1,week2;定义了两个枚举变量,这两个变量只能取sun到sat这个七个值之一,比如:week1=wed;
其中sun,mon....称为枚举元素,这是常量。
(3)枚举元素在C编辑器中,按定义时的排列顺序取值0,1,2,3,.........。比如:
week1=wed;
printf(“%d”,week1);
此时输出的结果是:3,因为wed在weekday中下标是3。
(4)枚举元素既然是常量,就不应该给它赋值。比如sun=1,mon=2;这是错误的。
但是在定义的时候可以进行初始化。比如:
Enum weekday {sun=7,mon=1,tue,wed,thu,fri,sat};
此时,tue、wed....的值从mon的值顺序加1,如,tue=2。