第二书包网

收藏备用网址www.dier22.com不迷路
繁体版 简体版
第二书包网 > c语言设计第三版 > 0 1 1 1 1 0 0 1

0 1 1 1 1 0 0 1

所以也可以把它们看成是整型量。C语言允许对整型变量赋以字符值,也允许对字符

变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。

整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时,只有低八位字

节参与处理。

【例 3.9】向字符变量赋以整数。

main()

char a,b;

a=120;

b=121;

printf("%c,%c\n",a,b);

printf("%d,%d\n",a,b);

本程序中定义 a,b 为字符型,但在赋值语句中赋以整型值。从结果看,a,b 值的输出

形式取决于 printf 函数格式串中的格式符,当格式符为"c"时,对应输出的变量值为字符,当

格式符为"d"时,对应输出的变量值为整数。

【例 3.10】

main()

char a,b;

a='a';

b='b';

a=a-32;

b=b-32;

printf("%c,%c\n%d,%d\n",a,b,a,b);

谭浩强 C 语言程序设计 2001 年 5 月 1 日

本例中,a,b 被说明为字符变量并赋予字符值,C语言允许字符变量参与数值运算,

即用字符的 ASCII 码参与运算。由于大小写字母的 ASCII 码相差 32,因此运算后把小写字

母换成大写字母。然后分别以整型和字符型输出。

3.5.5 字符串常量

字符串常量是由一对双引号括起的字符序列。例如: "CHINA" , “C program” ,

"$12.5" 等都是合法的字符串常量。

字符串常量和字符常量是不同的量。它们之间主要有以下区别:

1) 字符常量由单引号括起来,字符串常量由双引号括起来。

2) 字符常量只能是单个字符,字符串常量则可以含一个或多个字符。

3) 可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变

量。在C语言中没有相应的字符串变量。这是与 BASIC 语言不同的。但是可以用

一个字符数组来存放一个字符串常量。在数组一章内予以介绍。

4) 字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数

加 1。增加的一个字节中存放字符"\0" (ASCII 码为 0)。这是字符串结束的标志。

例如:

字符串 "C program" 在内存中所占的字节为:

C p r o g r a m \0

字符常量'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况是不同的。

'a'在内存中占一个字节,可表示为:

"a"在内存中占二个字节,可表示为:

a \0

3.6 变量赋初值

在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法为变量提

供初值。本小节先介绍在作变量定义的同时给变量赋以初值的方法。这种方法称为初始化。

在变量定义中赋初值的一般形式为:

类型说明符 变量 1= 值 1,变量 2= 值 2,……;

例如:

int a=3;

int b,c=5;

float x=3.2,y=3f,z=0.75;

char ch1='K',ch2='P';

应注意,在定义中不允许连续赋值,如 a=b=c=5 是不合法的。

【例 3.11】

main()

int a=3,b,c=5;

b=a+c;

printf("a=%d,b=%d,c=%d\n",a,b,c);

谭浩强 C 语言程序设计 2001 年 5 月 1 日

3.7 各类数值型数据之间的混合运算

变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转

换。自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以

下规则:

1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

2) 转换按数据长度增加的方向进行,以保证­精­度不降低。如 int 型和 long 型运算时,

先把 int 量转成 long 型后再进行运算。

3) 所有的浮点运算都是以双­精­度进行的,即使仅含 float 单­精­度量运算的表达式,也

要先转换成 double 型,再作运算。

4) char 型和 short 型参与运算时,必须先转换成 int 型。

5) 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为

左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样

会降低­精­度,丢失的部分按四舍五入向前舍入。

下图表示了类型自动转换的规则。

double

long

unsigned

【例 3.12】

main(){

float PI=3.14159;

int s,r=5;

s=r*r*PI;

printf("s=%d\n",s);

int

char,short

谭浩强 C 语言程序设计 2001 年 5 月 1 日

本例程序中,PI 为实型;s,r 为整型。在执行 s=r*r*PI 语句时,r 和 PI 都转换成 double

型计算,结果也为 double 型。但由于 s 为整型,故赋值结果仍为整型,舍去了小数部分。

强制类型转换

强制类型转换是通过类型转换运算来实现的。

其一般形式为:

(类型说明符) (表达式)

其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如:

(float) a 把 a 转换为实型

(int)(x+y) 把 x+y 的结果转换为整型

在使用强制转换时应注意以下问题:

1) 类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成

(int)x+y 则成了把 x 转换成 int 型之后再与 y 相加了。

2) 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进

一秒记住www点dier22点com,最新小说等你来
『加入书签,方便阅读』