分享

C 之常量、变量及数据类型

 长沙7喜 2018-04-16

常量

一、常量

  常量是指在程序中使用的一些具体的数、字符。在程序运行过程中,其值不能被更改。如123,145.88,'m',TRUE等。

1、整型常量:如3-50等。

   整型常量是表示整数的常量。有三种表示形式:

   1)十进制形式。如99-1

   2)八进制形式。以数字0打头,由0-7构成,如012,表示八进制整数12,即12(8)

   3)十六进制形式。以0x打头,如0x12A,表示十六进制整数12A,即12A(16)

2、实型常量:如3.1-6.1E+2(科学记数法)。

3、字符常量:是用单引号括起来的字符,如 'k' '5' '%'

  注意:'a''a'表示的含义是不同的,'a'表示一个字符常量,'a'表示一个字符串。

一个常量可以直接调用(如124,'A'),也可以给常量取个名字用一个标识符代表它,这就是符号常量。其语法格式为:

                   const  符号常量=常量字串;

   例如:const doublePI=3.1415926;

2.5  输入半径r,求圆的周长及面积。

#include       //调用iostream库,否则使用printfscanf语句编译出错

using namespacestd;          //这个程序可省略这行

const doublePI=3.1415926;           //PI是符号常量。代表3.1415926

int main()

{

       float r,c,s;                      //定义实型变量

       printf('r=');                     //显示提示符r=

       scanf('%f',&r);               //输入r的值,&符号不能漏掉

       c=2*PI*r;                        //计算圆的周长

       s=PI*r*r;                         //计算圆的面积

       printf('c=%.2fs=%.2f\n',c,s);   //显示计算结果,结果保留2位小数

}

   程序中定义的PI代表常量3.1415926,在编译源程序时,遇到PI就用常量3.1415926代替,PI可以和常量一样进行运算。C++语言规定,每个符号常量的定义占据一个书写行,而且符号常量不能被再赋值。如果在例2.5中使用以下赋值语句是错误的。

    PI=3.1415926;

习惯上,符号常量名用大写,而变量名用小写,以便于区别。

  使用符号常量的好处:

1)增加了程序的可读性。如看到例2.5程序中,见到PI就可知道它代表圆周率,定义符号常量名时应该尽量使用见名知意的常量名。

2)增加了程序的易改性。如例2.5程序中,只需改动一处,程序中的所有PI都会自动全部代换,做到“一改全改”

 

变量

变量代表了一个存储单元,其中的值是可以改变的,因此称为变量。如游戏中玩家命的条数最初为3,当你死了一次,命减少一条,这里命的条数就是一个变量(或者说命的条数存储在一个存储单元中)。

  一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存储单元)取一个名(称为变量名),该变量(存贮单元)存储的值称为变量的值,变量中能够存储值的类型为变量的类型。例如游戏中用于存储“命”的变量,在游戏程序中的存储命的变量名可取为life,它的类型为整型,游戏初始时这个变量的值为3

变量名

用一个合法的标识符代表一个变量。如nmrottotal 等都是合法变量名。在程序中用到的变量要“先定义后使用”,变量名应遵循自定义标识符的命名规则,并建议使用“见名知义”的原则,即用一些有意义的单词作为变量名。在C++语言,变量名大小写有区别。

用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。C++语言规定,标识符只能由字母(包含下划线“_”)开头,后面的字符可以是字母或数字。对于标识符的长度,不同的C++语言编译器有不同的规定,考虑到系统的可移植性,建议变量名的长度不要超过8个字符。例如:month_ages2为合法的标识符;m.k.jacka<=b9y为不合法的标识符。

  定义变量的语法格式为:

   数据类型                  变量表

  例如:

int  i=5,j,k;                  //定义i,j,k为整型变量,

                                      //i赋初值为5,j,k的初值未知。

  char a,b,c;                     //定义a,b,c为字符变量

  float  x,y,z;                   //定义x,y,z为实型变量

C++语言允许在定义变量的同时为变量赋初值。

变量的类型

常量是有类型的数据,变量在某一固定时刻用来存储一个常量,因此也应有相应的类型。如整型变量用来存储整数,实型变量用来存储实数。变量的类型,可以是标准数据类型intshortlongfloatdoublechar等,也可以是用户自定义的各种类型。

  变量一经定义系统就在计算机内存中为其分配一个存储空间。在程序中使用到变量时,就在相应的内存中存入数据或取出数据,这种操作称为变量的访问。

【上机练习】

  1. 甲流疫情死亡率

   甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。

输入:

    输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。

输出:

    输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位。

样例输入:

   10433 60

样例输出:

   0.575%

w  【上机练习】

2.计算多项式的值【1.3编程基础之算术表达式与顺序执行07

    对于多项式f(x) =ax^3+bx^2+cx+d和给定的a,b,c,d,x,计算f(x)的值,保留到小数点后7位。

输入:

    输入仅一行,包含5个实数,分别是x,及参数abcd的值,每个数都是绝对值不超过100的双精度浮点数。数与数之间以一个空格分开。

输出:

    输出一个实数,即f(x)的值,保留到小数点后7位。

样例输入:

   2.31 1.2 2 2 3

样例输出:

   33.0838692

w  【上机练习】

3.温度表达转化【1.3编程基础之算术表达式与顺序执行08

    利用公式C =5*(F-32)/9(其中C表示摄氏温度,F表示华氏温度)进行计算转化,输入华氏温度f,输出摄氏温度c,要求精确到小数点后5位。

输入:

    输入一行,包含一个实数f,表示华氏温度。(f>= -459.67

输出:

    输出一行,包含一个实数,表示对用的摄氏温度,要求精确到小数点后5位。

样例输入:

   41

样例输出:

   5.00000

w  【上机练习】

4.与圆相关的计算【1.3编程基础之算术表达式与顺序执行09

    给出圆的半径,求圆的直径、周长和面积。输入圆的半径实数r,输出圆的直径、周长、面积,每个数保留小数点后4位。

输入:

    输入包含一个实数r0 < r<= 10,000),表示圆的半径。

输出:

    输出一行,包含三个数,分别表示圆的直径、周长、面积,数与数之间以一个空格分开,每个数保留小数点后4位。

样例输入:

   3.0

样例输出:

   6.0000 18.8495 28.2743

w  【上机练习】

5.计算并联电阻的阻值【1.3编程基础之算术表达式与顺序执行10

    对于阻值为r1r2的电阻,其并联电阻阻值公式计算如下:R = 1/(1/r1 + 1/r2)。输入两个电阻阻抗大小,浮点型。输出并联之后的阻抗大小,结果保留小数点后2位。

输入:

    两个电阻阻抗大小,浮点型,以一个空格分开。

输出:

    并联之后的阻抗大小,结果保留小数点后2

样例输入:

    12

样例输出:

   0.67

标准数据类型

整型(integer

C++语言中,整型类型标识符为int。根据整型变量的取值范围又可将整型变量定义为以下8种整型类型:

数据类型

定义标识符

占字节数

数值范围

数值范围

短整型

short [int]

2(16)

-3276832767

-215215-1

整型

[long] int

4(32)

-21474836482147483647

-231231-1

长整型

long [int]

4(32)

-21474836482147483647

-231231-1

超长整型

long long [int]

8(64)

-92233720368547758089223372036854775807

-263263-1

无符号整型

 unsigned [int]

2(16)

065535

0216-1

无符号短整型

unsigned short [int]

2(16)

065535

0216-1

无符号长整型

unsigned long [int]

4(32)

04294967295

0232-1

无符号超长整型

unsigned long long

8(64)

018446744073709551615

0264-1

 

实型数取值范围

 

数据类型

定义标识符

数值范围

占字节数

有效位数

单精度实型

float

-3.4E-383.4E+38

4(32)

67

双精度实型

double

-1.7E+3081.7E+308

8(64)

1516

长双精度实型

long  double

-3.4E+49321.1E+4932

16(128)

1819

布尔变量

bool

true或假false之一

1(8)


 字符型(char

字符常量有以下两种表示法:     

1、普通表示形式

  字符常量是由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128个字符(2-4)。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:'a''A''0'等。如字符A的序号是65,字符a的序号是97, 字符0的序号的48

2、转义字符表示形式。

  转义字符有三种用法:表示控制字符、表示特殊字符、表示所有字符。常用的转义字符如右表所示。

转义字符

含义

'\n'

换行

'\t'

水平制表

'\b'

退格

'\r'

回车(不换行)

'\0'

空字符

'\’'

单引号

'\”'

双引号

'\\'

一个反斜杠字符

'\ddd'

13位八进制数所代表的字符

'\xhh'

12位十六进制数所代表的字符

 ASCII编码表见下图:

 

序号

字符

序号

字符

序号

字符

序号

字符

序号

字符

序号

字符

32

空格

48

0

64

@

80

P

96

`

112

p

33

!

49

1

65

A

81

Q

97

a

113

q

34

50

2

66

B

82

R

98

b

114

r

35

#

51

3

67

C

83

S

99

c

115

s

36

$

52

4

68

D

84

T

100

d

116

t

37

%

53

5

69

E

85

U

101

e

117

u

38

&

54

6

70

F

86

V

102

f

118

v

39

'

55

7

71

G

87

W

103

g

119

w

40

(

56

8

72

H

88

X

104

h

120

x

41

)

57

9

73

I

89

Y

105

i

121

y

42

*

58

 :

74

J

90

Z

106

j

122

z

43

+

59

;

75

K

91

[

107

k

123

{

44

,

60

76

L

92

\

108

l

124

|

45

-

61

=

77

M

93

]

109

m

125

}

46

.

62

78

N

94

^

110

n

126

47

/

63

?

79

O

95

_

111

o

127

deL

 2.6 整型数据类型存储空间大小

   分别定义intshort类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)

【参考程序】

#include

using namespace std;

int main()

{  

         intx;

         shorty; 

         cout<

                        //sizeof返回一个对象或者类型所占的内存字节数

         return0;

}

   基于char数据的这个特点,它可以和int变量一样做加减运算,例2.7说明了这种用法。

2.7  大小字母的转换

#include

using namespace std;

int main()

{   char c1,c2;

    c1='a';

    c2='A';

    cout<

    c1=c1-32;                              //小写字母转换大写字母

    c2=c2+32;                              //大写字母转换小写字母

    cout<

}

  运行结果:

a   A

A   a

  

四、数据类型转换

C++语言中,不同数据类型的运算对象进行混合运算,或者需要将一个表达式的结果转换成期望的类型时,就需要依据数据类型转换规则进行转换。

 

1、混合运算时的类型转换规则

       整型、实型、字符型数据间可以混合运算。在这种情况下,需要将不一致的数据类型转换成一致的数据类型,然后进行运算。为了保证运算精度,系统在运算时的转换规则是将存储长度较短的运算对象转成存储长度较长的类型,然后再进行处理。这种转换是系统自动进行的,具体见表2-5所示。

【说明如下】

1)纵向箭头表示必定会进行的转换,如float型数据必先转换为double型数据,然后与其他操作数

进行运算。与此类似,char型或short型数据必先转换为int型数据,然后进行运算。

2)横向箭头表示当运算对象为不同类型数据时的转换方向,如int型数据与unsigned型数据进行运

算,int型转换为unsigned型后方可进行运算。int型与double型进行运算,int型直接转换为double

型后进行运算,不能理解为先转换为unsigned int型,然后转换为long int型,最后再转换为double型。

2、赋值时的类型转换规则

  当赋值运算符两侧的数据类型不同时,需进行类型转换,这种转换是系统自动进行的,转换规则如下:

1floatdouble型赋值给int型:直接截断小数。

  例如,“int i=f+0.6;”f的值为4.0,右边算术表达式运算后的结果为4.6double型数据,根据上述转换原则,直接舍弃小数,所以i的值为4

2)intchar型赋值给floatdouble型:补足有效位以进行数据类型转换。

  例如:“float f=4;”float7位有效数字,所以f的值为4.0000000

3char(1字节)赋给int(4字节):数值赋给int型的低8位,其它位补0

4long  int型赋值给int型:long int型截断低字节给int型。

5int型赋值给long int型:赋给long int型的低16位,如果int型的最高位是0,则long int的高16位全为0;如果int型的最高位是1,则long int型的高16位全为1(称为“符号扩展”)。

6unsigned int型赋值给int型:直接传送数值。

7)非unsigned int型赋值给位数相同的unsigned int型:直接传送数值。

3、强制类型转换

    C++语言中,还允许强制类型转换,即将某一数据的数据类型转换为指定的另一种数据类型,强制类型转换只是临时转换。强制转换运算符组成的运算表达式的一般形式为:(类型名)(表达式)

   例如:已知有变量定义“int b=7;float a=2.5,c=4.7;”,求下面算术表达式的值。

         a+(int)(b/3*(int)(a+c)/2.0)%4

  根据运算符的结合性规则,表达式要自左至右执行,b/322*(int)(a+c)1414/2.07.0,强制类型转换后为77%43a的值2.53相加,最终结果为5.5

【上机练习】

1.整型数据类型存储空间大小【1.2编程基础之变量定义、赋值及转换01

   分别定义intshort类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)

输入:

   无。

输出:

   一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。

2.浮点型数据类型存储空间大小【1.2编程基础之变量定义、赋值及转换02

   分别定义floatdouble类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)

输入:

   无。

输出:

   一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。

【上机练习】

3.其他数据类型存储空间大小

   分别定义boolchar类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)

输入:

   无。

输出:

   一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。

4.浮点数向零舍入

   输入一个单精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。提示:可以使用强制类型转换来实现。

输入: 一个单精度浮点数。                 

输出: 一个整数,即向零舍入到整数的结果。

样例输入:

   2.3

样例输出:

   2

【上机练习】

5.打印ASCII

   输入一个除空格以外的可见字符(保证在函数scanf中可使用格式说明符%c读入),输出其ASCII码。

输入:

   一个除空格以外的可见字符。

输出:

   一个十进制整数,即该字符的ASCII码。

样例输入:

   A

样例输出:

   65

【上机练习】

6.打印字符

   输入一个整数,即字符的ASCII码,保证存在对应的可见字符。输出相对应的字符。

输入:

   一个整数,即字符的ASCII码,保证存在对应的可见字符。

输出:

   一行,包含相应的字符。

样例输入:

   65

样例输出:

   A

【上机练习】

7.整型与布尔型的转换

   将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少?

输入:

   一个整型范围内的整数,即初始时整型变量的值。

输出:

   一个整数,经过上述过程后得到的结果。

样例输入:

   3

样例输出:

   1

【上机练习】

8.Hello,World!的大小

   在上一章里,我们曾经输出过的“Hello, World!”吗?它虽然不是本章所涉及的基本数据类型的数据,但我们同样可以用sizeof函数获得它所占用的空间大小。

输入:

   无。

输出:

   一个整数,即“Hello, World!”的大小。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多