C语言进修教程第二章-数据范例、运算符、表达式(五)
字符串常量
字符串常量是由一对双引号括起的字符序列。譬喻: "CHINA" ,"C program:" , "$12.5" 等都是正当的字符串常量。字符串常量和字符常量是差异的量。它们之间主要有以下区别:
1.字符常量由单引号括起来,字符串常量由双引号括起来。
2.字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
3.可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在C语言中没有相应的字符串变量。
这是与BASIC 语言差异的。可是可以用一个字符数组来存放一个字符串常量。在数组一章内予以先容。
4.字符常量占一个字节的内存空间。字符串常量占的内存字节数便是字符串中字节数加1。增加的一个字节中存放字符"\0"(ASCII码为0)。这是字符串竣事的符号。譬喻,字符串 "C program"在内存中所占的字节为:C program\0。字符常量’a’和字符串常量"a"固然都只有一个字符,但在内存中的环境是差异的。
‘a’在内存中占一个字节,可暗示为:a
"a"在内存中占二个字节,可暗示为:a\0标记常量
标记常量
在C语言中,可以用一个标识符来暗示一个常量,称之为标记常量。标记常量在利用之前必需先界说,其一般形式为:
#define 标识符 常量
个中#define也是一条预处理惩罚呼吁(预处理惩罚呼吁都?quot;#"开头),称为宏界说呼吁(在第九章预处理惩罚措施中将进一步先容),其成果是把该标识符界说为其后的常量值。一经界说,今后在措施中所有呈现该标识符的处所均代之以该常量值。习惯上标记常量的标识符用大写字母,变量标识符用小写字母,以示区别。
#define PI 3.14159
void main()
{
float s,r;
r=5;
s=PI*r*r;
printf("s=%f\n",s);
}
由宏界说呼吁界说PI 为3.14159 s,r界说为实数 5->r PI*r*r->s
显示措施功效 float s,r; r=5; s=PI*r*r; 本措施在主函数之前由宏界说呼吁界说PI 为3.14159,在措施中即以该值取代PI 。s=PI*r*r等效于s=3.14159*r*r。应该留意的是,标记常量不是变量,它所代表的值在整个浸染域内不能再改变。也就是说,在措施中,不能再用赋值语句对它从头赋值。
变量的初值和范例转换
变量赋初值
在措施中经常需要对变量赋初值,以便利用变量。语言措施中可有多种要领,在界说时赋以初值的要领,这种要领称为初始化。在变量说明中赋初值的一般形式为:
范例说明符 变量1= 值1,变量2= 值2,……; 譬喻:
int a=b=c=5;
float x=3.2,y=3f,z=0.75;
char ch1=’K’,ch2=’P’;
应留意,在说明中不答允持续赋值,如a=b=c=5是不正当的。
void main()
{
int a=3,b,c=5;
b=a+c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
a<—3,b<–0,c<—5
b<–a+c
显示措施运行功效
变量范例的转换
变量的数据范例是可以转换的。转换的要领有两种, 一种是自动转换,一种是强制转换。
自动转换
自动转换产生在差异数据范例的量殽杂运算时,由编译系统自动完成。自动转换遵循以下法则:
1.若参加运算量的范例差异,则先转换成同一范例,然后举办运算。
2.转换按数据长度增加的偏向举办,以担保精度不低落。如int型和long型运算时,先把int量转成long型后再举办运算。
3.所有的浮点运算都是以双精度举办的,纵然仅含float单精怀抱运算的表达式,也要先转换成double型,再作运算。
4.char型和short型参加运算时,必需先转换成int型。
5.在赋值运算中,赋值号双方量的数据范例差异时, 赋值号右边量的范例将转换为左边量的范例。 假如右边量的数据范例长度左边长时,将丢失一部门数据,这样会低落精度, 丢失的部门按四舍五入向前舍入。图2