第二章 变量和基本类型

合集下载

C语言基础知识第二章概述

C语言基础知识第二章概述

2019/3/14
C语言程序设计教程
第2章 C语言的基本数据类型与表达式
12
例如:字符A的ASCII码为: 65D(十进制)=41H(十六进制)=101Q(八 进制) ∴字符A可以表示为‘A’、’\x41’、’\101’。 2、分类: char 和 unsigned char; 3、值域: 每个字符型数据在内存中占一个字节;包括 ASCII字符表中的所有字符(可显示字符和非显 示字符)。
– 例如: 某计算机允许表示具有七位有效数字的十进制数,计算 333.3333+0.0002222222,若计算时没有位数的限制,则结果应当 是3.3335222222。 计算机由于字长位数的限制,只能表示七位有 效数字,于是只得将小数点后的七个数字全部删掉,而仅保留其 整数部分,得到和值333.3335。 (4)根据实际要求选择单精度或双精度。
2019/3/14
C语言程序设计教程
13
• 注意: • • • • (1)字符常量只能用单引号括起来,不能用双引号 或其他括号。 (2)字符常量只能是单个字符, 不能是字符串。 ‘ab’ 不是字符常量 (3)字符可以是字符集中任意字符,但数字被定义为 字符型之后就以ASCII码值参与数值运算。 如,‘6’和6是不同的,‘6’是字符常量,而6是整型 常量。
注意
‘a’与“a”的区别。
2019/3/14
C语言程序设计教程
15
• 字符常量与字符串常量的区别:
– ⑴ 定界符不同。 – 字符常量使用单引号,而字符串常量使用双引号。 – ⑵ 长度不同。 – 字符常量的长度固定为1,而字符串常量的长度可以是0,也可以 是某个整数。 – ⑶ 存储要求不同。 – 字符常量存储的是字符的ASCII码值,而字符串常量除了要存储 字符串常量的有效字符外,还要存储一个字符串结束标志‘\0’。

C程序设计基础-PPT课件

C程序设计基础-PPT课件
第二章 C程序设计基础
2.1 常量和变量
注意符:号常量在其作用域内不能再赋值。
符号常量的好处:(1)含义清楚。(2)需改变时,“一改全改”。
2024/10/14
1
2.1 常量和变量
注意:
1、变量中的值:变量必须要有值才能参与运算,(如果一个变量
没有赋值,则该变量是一个随机值)变量可以在定义后与其赋值,也可以
2024/10/14
16
2.3 运算符与表达式
逻辑运算符和逻辑表达式
符号
例子 0&&0=0、0&&1=0、1&&0=0、1&&1=1
0||0=0、0||1=1、1||0=1、1||1=1 !1=0、!0=1
使用说明: ➢1、逻辑非优先级高于逻辑与和逻辑或,逻辑与和逻辑或优先级相同; ➢2、C语言规定:非0都表示“真”,只有0表示“假”; 例:6<4&&7>-3+!5
14
2.3 运算符与表达式
赋值运算符与赋值表达式
符号
功能
例子
=
将表达式右边的数据赋值给左边的变量
x=3+a
+=
将表达式右边的计算结果加上左边的变 量再赋值给左边的变量
x+=3+a等价于x=x+(3+a)
-=
将表达式右边的计算结果减去左边的变 量再赋值给左边的变量
x-=3+a等价于x=x-(3+a)
6~7
双精度(double): 8B 10-308 ~ 10308 15~16
长双精度: 16B 10-4931 ~ 104932 18~19

变量与基本数据类型

变量与基本数据类型
【实例2.4】将介绍如何使用字符型数据,通过该实例,读者朋友可 以了解到在VC++ 6.0下,各种字符型数据的范围和所占内存字节数。
北京源智天下科技有限公司
1-10
联系方式:
布尔类型
在C中,程序员往往使用一个整型的变量标识一个对象的真假,C++ 中提供了布尔类型,布尔类型对象可以被赋予文字值true或者false,就是 真或假,同C语言中的整型衔接起来看,布尔类型的对象也可以被看做是 一种整数类型的对象,更好的解释是布尔类型对象将被隐式的转换成整 型对象,它们的值即false就是0,而true就是1,同样整型对象也可以向布 尔型对象转换。但是它不能被声明成signed、unsigned、short long,否 则会导致编译错误。
北京源智天下科技有限公司
1-2
联系方式:
如何定义变量
和其他高级语言一样,在C++语言中用来对变量、符号常量、 函数、数组、类型等数据对象命名的有效数字符序列统称为标识符。 简单地说,标识符就是一个名字。 C++语言规定标识符只能由字母、数字和下划线3种字符组成, 且第一个字符必须为字母或下划线。下面列出的都是合法的标识符, 可以作为变量名: sum, average, _total, Class, day, month, Student_name, tan 下面是不合法的标识符和变量名: M.D.Smith, 123, #33, 3F65, a<b 注意:编译系统将大写字母和小写字母认为是两个不同的字符。 因此,sum和SUM是两个不同的变量名,同样,Class和class也是 两个不同的变量名。一般,变量名用小写字母表示,与人们日常习 惯一致,以增加可读性。 【实例2.1】演示了变量定义的规范

C语言——第02章数据类型1

C语言——第02章数据类型1

例2.2 整型变量的定义与使用
#include <stdio.h> void main() { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d);
}
(4) 整型数据的溢出 例2.3 数据的溢出 #include <stdio.h> 2 void main() 3 { 4 short a,b; 5 a=32767; 6 b=a+1; 7 printf("%d,%d\n",a,b); 8 }
区分变量名和变量值是两个不同的概念
练习:为变量a和b分别赋一个实数,求
a-b
a+b
的结果.
#include<stdio.h> void main() { float a,b; scanf(“%f%f”,&a,&b); printf("%f\n",(a-b)/(a+b)); }
§2.4 整型数据
练习:
编写:定义2个单精度变量a和b,求其和存入变量sum中; 定义2个双精度变量c和d,求其积存入变量tim中,a、b、 c、d的值任意给。
#include <stdio.h> void main() { float a,b,sum; double c,d,tim; scanf(“%f%f%f%f”,&a,&b,&c,&d); sum=a-b; tim=c*d; printf(“sum=%f tim=%f\n”,sum,tim); }


“规范化的指数形式‛,即在字母e(或E)之前 的小数部分中,小数点左边应有一位(且只能有 一位)非零的数字。 一个实数在用指数形式输出时,是按规范化的指 数形式输出的。 例如: 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e5 其中的1.23456e2称为“规范化的指数形式”。

C语言程序设计 第2章 数据类型

C语言程序设计 第2章 数据类型

2.2常量和变量 变量名与变量值的关系:
2.2常量和变量
变量的使用:先定义后使用
变量定义的一般形式:
数据类型 变量名1,变量名2,…,变量名n;
2.2常量和变量
➢ 凡未被事先定义的,系统不把它认作变量名,这就 能保证程序中变量名使用的正确
例:varname,在使用的时候误写成vaname
➢ 在定义变量时要指定变量的类型,在编译时就能为 变量分配相应的存储单元
5
2.2常量和变量
甘草 三七 干姜 葛根
枸杞 人参 陈皮 地黄
山药 当归 谷芽 黄连
贴上标签 加以区分
用标识符给变量起名字
2.2常量和变量 变量命名规则
➢ 只能由字母(a~z,A~Z)、数字(0~9)和下划线(_)构 成
➢ 第一个字符不能为数字 ➢ 不能与关键字同名
例:a9,_a, A_num √ 9a, a*num,int ×
控制语句:控制语句用于控制程序的流程。 C语言提供三类控制语句: ➢ 选择语句 ➢ 循环语句 ➢ 转移语句。 控制语句会在第三章和第四章详细介绍。
2.7 表达式与语句
复合语句: 复合语句由一对大括号括起来的一 条或多条语句组成。 例:{
turnOn(0,3); turnOn(0,4); turnOn(0,5); turnOn(1,4); }
2.7 表达式与语句
表达式语句:表达式末尾加上“;”就构成一条 表达式语句。 例:
s = 3.14 * r * r; 就是一条赋值表达式语句。表达式语句最后的 分号是语句中必不可少的一部分。
2.7 表达式与语句
函数调用语句:函数调用语句由函数调用加分 号构成。 例:
turnOn(1,1);

C语言-基本数据类型、常量和变量

C语言-基本数据类型、常量和变量
-1.234E18, 2.74e-02, 2.71828e0, .86e-3, 1e-2等。 书写指数格式的浮点数时,字母e或E前面必须有数字,可以没有 小数点,如.2e3,2.3e,2e3是正确的,而.e3,e-3等是错误的。同 时,e或E后面必须是正负整数,不能带小数点,如1.2e3.1、0.3e0.5等是错误的。
4
3. 类型修饰符
(1)short和long可以提供不同的数据长度以满足实际使用的需要。
C规定:长度 short int ≤ int ≤ long int
VC++ 6.0
16bit 32bit 32 bit
C规定:长度 float ≤ double ≤ long double
VC++ 6.0
32bit 64bit 64bit
整理ppt
5
VC++ 6.0数据类型和取值范围
类型 char [signed] char unsigned char int [signed] int unsigned [int] short int
长度(字节) 1 1 1 4 4 4 2
取值范围 -128~127 -128~127 0~255 -2147483648~2147483647 -2147483648~2147483647 0~4294967295 -32768~32767
在整数后面加上后缀l或L则构成长整数,如
-124783648l,1234567890L
在整数后面加上后缀ul或UL则构成无符号长整数,如
3456ul,1234567890ul
整理ppt
8
(2)八进制整数 以数字0打头,后跟0~7组成的数字串。例如:
0123表示八进制常数123,相当于十进制数83。 八进制整数可以加上后缀u(U),l(L)或ul(UL)分别构成八进制

C语言 第2章 类型、运算符与表达式(2.4~2.7)

C语言 第2章 类型、运算符与表达式(2.4~2.7)
第二章
数据类型、运算符和表达式
主要内容
2.1 预备知识 2.2 常量和变量的概念 2.3 各种数据类型的常量及变量 2.4 变量赋初值 2.5 不同类型数据之间的混合运算 2.6 常用运算符和表达式 2.7 输入函数与输出函数
2
2.4.1 变量和内存的概念
变量: 程序运行过程中其值可以改变的量。 系统为程序中的每一个变量开辟存储单元。 变量名: 字母开头,后跟字母、数字和下划线组成。 C语言中的关键字不能作为变量名。
37
2.7.1
格式输出函数printf
printf函数一般格式: printf(格式控制,输出表列) 格式控制是由双引号括起来的字符串,包含三种信息: 1、格式说明:由“%”和格式字符组成,如%d,%f等。 它的作用是将输出的数据按照指定的格式输出。 2、普通字符:需要原样输出的字符。 3、转义字符:用于控制输出。 输出表列是一些要输出的数据。
27
2.5 数据的混合运算
1、自动转换
• 运算转换
• 赋值转换 2、强制类型转换
28
1、自动转换—运算转换

在进行运算时,不同类型的数据要先自动转换成 同一类型,然后进行运算。转换的规则按图所示。
double← float
long unsigned 转换由编译系统自动完成。 转换按数据长度增加的方向进行, 即按“向高看齐”的原则提升“ 较低”类型,以保证不降低精度。

33
2、强制类型转换
注意:对一个变量进行强制转换后,得到一个新的 类型的数据,但原来变量的类型不变。 例:x原为实型变量且值为2.6,在执行 i = (int)x 后得到一个整数 2,并把它赋给整型变量 i, 但 x 仍为实型,值为2.6。

变量和基本类型课件

变量和基本类型课件

全局变量和局部变量
全局变量在程序的任何位置都可以被访问和修改。
局部变量只能在定义它的函数或代码块中被访问和修改。
全局变量和局部变量具有不同的生命周期和作用域,使用时应根据需要选择适当的 变量类型。
06
常见错误和注意事项
变量命名错误
总结词
变量命名错误通常是由于变量名与保留 字冲突或命名不符合规范所导致的。
默认初始化值
某些编程语言会在变量声明时为 其赋予一个默认初始化值,如C 中的整型变量默认为0,浮点型
变量默认为0.0。
默认初始化值
默认初始化值的规则
不同的编程语言有不同的规则,但通常来说,数值类型的变量会被初始化为0,布尔类型的变量会被初始化为 false,引用类型的变量会被初始化为null或空。
在使用变量之前,应先对其进行初始化,为 其分配一个明确的值。未初始化的变量可能 会导致程序出现意外的结果或崩溃。为了避 免这种错误,应在使用变量之前对其进行初 始化,并确保在使用之前已经正确地初始化 了所有变量。
THANK YOU
感谢观看
常量的定义
常量的定义
常量是在程序运行期间不能改变其值 的变量。
常量的用途
常量的声明
在大多数编程语言中,常量在使用之 前需要先声明,声明时需要指定常量 的类型和名称,并且其值在声明后不 能被修改。
常量用于存储程序中不会改变的值, 例如数学常数、字符串或枚举值。
02
基本数据类型
整数类型
总结词
整数类型用于表示整数数值,包括正整数、负整数和零。
注意事项
显式转换需要程序员明确指定目标类型,并需要注意数据溢出、精度损 失等问题。
类型转换的注意事项
精度问题
在进行类型转换时,需要注意精度问题。例如,将浮点数 转换为整数时,小数部分会被舍去;将大整数转换为浮点 数时,可能会存在精度限制导致精度损失。

第2章基本数据类型、常量及变量

第2章基本数据类型、常量及变量

型必须有一个长度的限制
这个长度是指数据存储在计算机中需要占用多少个 字节数 不同类型的数据在内存中占用的字节数是不同的


溢出处理
不同的数据类型规定了不同的机内表示长度,
也决定了对应数据量的变化范围,当某一数据 超出该数据类型所规定的范围时,计算机会拒 绝接受,而将之转换成范围内的另外某个数, 这种情况称之为溢出处理。
6
3.常量

常量
在程序运行过程中其值不能被改变的量值

例1:
1,200 3.1,-4.0 „A‟,‘b‟ “abc”,“AB\n”

提示
在程序中使用常量时,一般不需要具体指出它属于 哪一种类型C语言编译系统会自动根据常量的数据 大小和直观形式来确定它的数据类型 例2:


3,3.0,‘3‟,“3”
提示

每个数据类型都有固定的表示方式
这个表示方式确定了可能表示的数据范围以及数据在内存中 的存放形式 C程序中所出现的所有数据都必须明确指定其数据类型


数据类型的体现
常量和变量是在计算机中数据类型的表现形式
不再是抽象的概念而是实在的数据,这些数据符合对 数据类型的规定(形式和运算规则两方面) 常量和变量之间的区别在于程序执行过程中的变化情 况
3.常量

整型常量
一个整数 常用的整数类型(IBM PC机及其兼容机上对C语言整型数的规定 )

整型

2字节: -32768~32767 4字节:-2147483648~2147483647 2字节: 0~65535 4字节 :0~4294967295

长整型

第2章 基本数据类型、常量和变量

第2章 基本数据类型、常量和变量

第2章 基本数据类型、常量和变量2.1 C 数据类型简介一个程序应该包括对数据的描述和对数据的处理。

但是程序要面临处理的数据有各种各样的类型,例如有一个用来处理学生基本信息的程序,所要处理的数据包括:学生的学号和姓名都是字符串,学生的年龄是整数,学生的成绩用浮点数表示等等。

而不同类型的数据不仅在机内的存储格式不同(例如整数用补码存放,而字符串是按串中每个字符的ASCII 码存放的),而且可以实现的运算也不同。

为了更好地对数据进行描述和处理,C 语言被设计成强类型语言(strongly typed language ),即C 语言程序中的每个数据必须具有明确的类型。

C 语言的数据类型可分为基本数据类型(整型、字符型和浮点型)、基于基本数据类型的构造数据类型(数组、struct 、union 、enum)、指针类型、空类型(void),见图2-1。

C 语言中数据分为常量和变量。

简单理解,在程序运行过程中其值不能改变的数据就是常量,而其值可以改变的数据称为变量。

下面分别介绍各种基本数据类型的常量和变量。

图2-1 C 语言中的数据类型数据类型2.2 基本数据类型——整数类型一、整型常量整数类型常量用于表示没有小数部分的数值,在C程序中整型常量可以表示成十进制、八进制或者十六进制形式,用不同的前缀来区分:(1) 十进制整型常量以非0(零)数字开头,例如237、-2009;(2) 八进制整型常量带有前缀0(零),例如027(等价的十进制数为23),-012(等价的十进制数为-10);(3) 十六进制整型常量带有前缀0x(X),例如0x2A(等价的十进制数为42),-0XA5b(等价的十进制数为-2651)。

【例2.1】下列哪些整型常量是合法的?012,oX7A,00,078,0x5Ac,-0xFFFF,0034,7B【例2.2】下面四个选项中,均是合法整型常量的选项是。

A) 160、-0xffff、011 B) –0xcdf、01a、0xeC) -01、986,012、0668 D) –0x48a、2e5、0x【例2.3】下面四个选项中,均是正确的八进制数或十六进制数的选项是。

变量和类型c_2

变量和类型c_2

{ enum Sex{male,female}; struct person { public string name; public int age; public Sex sex; public person(string str, int iage, Sex s) { name = str; age = iage; sex = s; } } class Program { static void Main(string[] args) { person p1 = new person(“xiaocui", 40, Sex.male); Console.WriteLine("name:{0},age:{1},sex:{2}", , p1.age, p1.sex); Console.ReadLine();} }}
//下面是从Person类继承的学生Student类的定义代码: class Test public class Student : Person{ { private string school; static void Main()// 程序运行入口主函数 public Student(string studentName, int studentAge, string { double // r;// 声明局部变量 schoolName) 构造函数 Console.WriteLine("请输入圆半径: "); :base(studentName,studentAge) // 调用Person构造函数 string strInput = Console.ReadLine();//调用类Console静态方法 { school = schoolName; r = double.Parse(strInput); //字符串类型转为实数double类型 } MyCircle aCircle = new MyCircle(r);//创建MyCircle对象(实例) public string School//属性 //通过实例调用计算圆面积实例方法 double aArea { get { return school; } = aCircle.CircleArea(); Console.WriteLine(" 半径 set { school = value; } {0}的面积={1}", r, aArea); //通过MyCircle类调用计算圆面积静态方法 } aArea = MyCircle.StaticCircleArea(r); newConsole.WriteLine(" public void Show()// 与基类方法同名,需要使用 new关键字 半径 {0}的面积={1}", r, aArea); {} } Console.WriteLine("名字:{0},年龄:{1},学校:{2}", Name, } Age,school); } }

c语言

c语言

例:
③ 其它字符
指除以上两种字符外的所有符号 ,输出时原样显示。
4. 使用说明 ① 整个格式控制字符串必须用双引号括住; ② 如果有输出项,格式控制字符串与第一个输出项之间用逗 号隔开;
③ 如果有多个输出项,各输出项之间用逗号隔开;
④ 格式转换说明符的个数应与输出项的个数相等,且顺序和
2、const定义
一般格式
const 数据类型 标识符=常数; 例 #define PI 3.14159 PI为字符串 例 const float PP= 3.14159; PP为 float 型符号常数 Const修饰得到的标识有值和类型的含义 ,而宏没有。
2.5 不同类型数据的输入输出
一. 格式化输出函数 printf( )简介
int型
2.2 常量及其类型
一、整数 说明:C语言允许使用十进制、八进制和十六进制整数。
十进制整数。
如:123,-45
八进制整数。以0开头的数是八进制数。
如:-0123
十六进制整数。以0x开头的数是十六进制数。
如:-0x12
1. 十进制整数的表示方法
一般:正(+ 可以省写)、负号(-)后跟数字串 例 -34、789
-2147483648~2147483647
0~4294967295
-3.4*1038~3.4*1038 -1.7*10308~1.7*10308
三.基本数据类型的扩展
对数值符号 signed 仅限于char和int型 的处理方法 unsigned
提供不同的 short 数据长度 long
double型
例如:
"I said ,\"good morning ! \ " " 运行结果: I said , " good morning ! "

C基本数据类型课件

C基本数据类型课件

可理解为对常量进行命名
目的与意义 增强程序可读性,使用有意义的名字命名 增强程序的可维护性,将值定义为符号常量, 则程序中仅需要修改一次
2.2
常量与变量
变量的定义:在程序执行过程中,其值改变的量。
系统为每个变量分配合适的存储空间,以存放其值
保存待处理的数据,中间与最终运算结果 变量定义的一般格式是: 类型名 变量名
2.5
main()
字符型数据
以下程序实现大小写字母转换。 #include<stdio.h>
{ char a='x',b='Y'; a=a-32; b=b+32; printf("%c,%c\n",a,b);
/* a,b被说明为字符变量并赋予字符值*/ /*把小写字母换成大写字母 */
2.3
整型数据
字节数
4 2 4 4 2
类型标识符
[signed] int [signed] short [int] [signed] long [int] unsigned [int] unsigned short [int]
范围
-2147483648~214748364 即-231~(231-1) -32768~32767 即-215~(215-1) -2147483648~2147483647 即-231~(2311) 0~4294967295 即0~(232-1) 0~65535 即0~(216-1)
2.4
实数数据
分析以下程序的运行结果。 #include <stdio.h>
main()
{ float x=101235342.98345678; double y=422222222345.11223344556677889900; printf("x=%f,y=%lf\n",x,y); } 程序的运行结果为:

第二章 C语言的基本数据类型

第二章 C语言的基本数据类型

标识符的有关规定:只能由字母、数字和下划线 组成,且第一个字符必须是字母或下划线;字母区分 大小写;不同的C编译系统规定标识符长度不同(如 IBM PC的MS C取8个字符,而Turbo C则允许32个字 符),考虑到程序的可移植性及阅读程序的方便,标 识符的长度一般不要超过8个字符,且应注意做到“见 名知意”
2、十六进制整常数:十六进制整常数的前缀为0X或0x。 其数码取值为0~9,A~F或a~f。 以下各数是合法的十六进制整常数: 0X2A(十进制为42)、 0XA0 (十进制为160)、 0XFFFF (十进制为65535) 以下各数是不合法的十六进制整常数: 5A (无前缀0X)、 0X3H (含有非十六进制数码) 3、十进制整常数: 十进制整常数没有前缀。其数码为0~9。 以下各数是合法的十进制整常数: 237、 -568、 65535、 1627 以下各数是不合法的十进制整常数: 023 (不能有前导0)、23D (含有非十进制数码)
各种无符号类型量所占的内存空间字节数与相应的有符号 类型量相同。但由于省去了符号位, 故不能表示负数
Turbo C中各类整型量所分配的内存字节数及数的表示范围。 类型名称 (中文) 类型名称 (英文) 占用的 字节数 2 2 2 2 4 4 取值范围 -32768~32767 0~65535 -32768~32767 0~65535 -2147483648 ~2147483647 0~4294967295
第二章 C语言的基本数据类型
教学内容: 1 C语言的数据类型 C语言的数据类型 2 常量与变量 3 整型数据 4 实型数据 5 字符型数据 6 变量赋初值 7 变量数据类型转换 基本要求: (1) 掌握基本数据类型及其常量的表示方法; (2) 掌握变量的定义及初始化方法; (3) 掌握变量数据类型的转换法 重点: C的数据类型、常量与变量、变量定义、变量赋初 始化、变量数据类型的转换 难点: 难点: 变量数据类型的转换

C语言程序设计第二章

C语言程序设计第二章

2.2 理论知识
运行结果:
2.2 理论知识
常量和变量 直接常量
字符串常量 字符串常量是用一对双引号括起来的零个或多个字符
如"","Hello,world!","123"等
双引号仅起定界作用,本身并不是字符串中的内容
2.2 理论知识
常量和变量 直接常量
字符串常量 字符串的长度 指一个字符串中所包含的字符个数 C语言规定在存储字符串常量时,由系统在字符串的末 尾自动加一个'\0'作为结8.539815
2.2 理论知识
符号常量的两个好处
1. 修改程序方便 2. 见名知意,便于理解程序
符号常量的使用
1. 其值在它的作用域内不能改变,也不能再被赋值 2. 符号常量名用大写,变量名用小写,以示区别
2.2 理论知识
举例:
#define PI 3.1415
void main() { int PI; PI=3.1415; PI=3.14159; }
指针类型 构造类型 空类型
数组类型
结构体类型
共用体类型
2.2 理论知识
C语言的基本数据类型 整数类型
数据类型 有符号整型
短整型 长整型
int a,b,sum; a=32768;
数据类型符 int
short long [int] [int]
占用字节数 2
2 4




-215~(215-1) 即-32768~32767
2.2 理论知识
常量和变量 变量的赋值
在定义变量时赋值 float data1=1.5,data2=2.6;
“先定义后赋值

第2章 数据类型、运算符、表达式

第2章 数据类型、运算符、表达式

第二章 数据类型、运算符、表达式一、数据类型C 语言中的数据类型比别的语言丰富。

基本类型的数据又可分为常量和变量,它们可与数据类型结合起来分类,即为整型常量、整型变量、实型(浮点型)常量、实型(浮点型)变量、字符常量、字符变量、枚举常量、枚举变量。

1、常量与符号常量常量:在程序执行过程中,其值不发生改变的量称为常量。

常量区分为不同的类型,如68、0、-12为整型常量,3.14,9.8为实型常量,‘a ’,‘b ’,‘c ’则为字符常量。

常量即为常数,一般从其字面即可判别。

符号常量:有时为了使程序更加清晰和便于修改,用一个标识符来代表常量,即给某个常量取个有意义的名字,这种常量称为符号常量。

如:#define PI 3.142、变量变量:程序执行过程中其值可以改变的量。

定义方法定义形式:数据类型 变量名1,变量名2,……变量名n ;整型(int )数据类型 基本类型 整型 单精度型(float )字符型(char )长整型(long )短整型(short )实型 双精度型(double )枚举类型(enum )共用体类型(union )构造类型结构体类型(struct )数组类型空类型(void )指针类型(*)如:char ch1, ch2; /* ch1,ch2为变量*/float x, y; /* x ,y 为实型变量*/int a, b, c; /* a,b,c 为整型变量*/在书写变量说明时,应注意以下几点:(1) 允许在一个类型说明符后,说明多个相同类型的变量。

各变量名之间用逗号间隔。

类型说明符与变量名之间至少用一个空格间隔。

(2) 最后一个变量名之后必须以“;”号结尾。

(3) 变量说明必须放在变量使用之前。

一般放在函数体的开头部分。

另外,也可在说明变量为整型的同时,给出变量的初值。

其格式为:类型说明符 变量名标识符1=初值1,变量名标识符2=初值2,...;3、数据在内存中的表示整型数据:以二进制的形式表示(1) int 类型正数: 如 123 (+123)用 16 位二进制(二个字节)表示原码 反码(原码同) 补码(原码同)最大正整数 215-1=214+213+212+211+210+29+2827+26+25+24+23+22+21+20=32767负数:如 –123原码补码(补码加 1)1取反加1 最大负整数-215=32768 因为 -215 < -(215-1) 所以用 -215 而不用 -(215-1)(2) unsigned (int) 类型称为无符号整数,它不是指不带“+ 或 -”号的整数,而是指内存表示这类数时没有符号位,16最大数215+214+213+2122+21+20=65535最小数 0 (3) long (int) 类型用 32 位二进制(四个字节)表示,其他同 int 型(4) short 类型有的计算机(小型、中型、大型机)int 即是 long ,而short 用16 位二进制(二个字节)表示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章变量和基本类型习题2.1int、long 和short 类型之间有什么差别?【解答】它们的最小存储空间不同,分别为16 位、32 位和16 位。

一般而言,short 类型为半个机器字(word)长,int 类型为一个机器字长,而long 类型为一个或两个机器字长(在32 位机器中,int 类型和long 类型的字长通常是相同的)。

因此,它们的表示范围不同。

习题2.2unsigned 和signed 类型有什么差别?【解答】前者为无符号类型,只能表示大于或等于0 的数。

后者为带符号类型,可以表示正数、负数和0。

习题2.3如果在某机器上short 类型占16 位,那么可以赋给short 类型的最大数是什么?unsigned short 类型的最大数又是什么?【解答】若在某机器上short 类型占16 位,那么可以赋给short 类型的最大数是215-1,即32767;而unsigned short 类型的最大数为216-1,即65535。

习题2.4当给16 位的unsigned short 对象赋值时,赋的值是什么?【解答】34464。

超过了16 位的unsigned short 类型的表示范围,编译器对其二进制表示截取低16 位,相当于对65536 求余(求模,%),得34464。

习题2.5float 类型和double 类型有什么差别?【解答】二者的存储位数不同(一般而言,float 类型为32 个二进制位,double 类型为64 个二进制位),因而取值范围不同,精度也不同(float 类型只能保证6 位有效数字,而double 类型至少能保证10 位有效数字)。

习题2.6要计算抵押贷款的偿还金额,利率、本金和付款额应分别选用哪种类型?解释你选择的理由。

【解答】利率可以选择float 类型,因为利率通常为百分之几。

一般只保留到小数点后两位,所以6 位有效数字就足以表示了。

本金可以选择long 类型,因为本金通常为整数。

long 类型可表示的最大整数一般为231-1(即),应该足以表示了。

付款额一般为实数,可以选择double 类型,因为float 类型的6 位有效数字可能不足以表示。

习题2.7解释下列字面值常量的不同之处。

(a) 'a',L'a',"a",L"a"(b) 10,10u,10L,10uL,012,0xC(c) 3.14,3.14f,3.14L【解答】(a) 'a',L'a',"a",L"a"'a'为char 型字面值,L'a'为wchar_t 型字面值,"a"为字符串字面值,L"a"为宽字符串字面值。

(b) 10,10u,10L,10uL,012,0xC10 为int 型字面值,10u 为unsigned 型字面值,10L 为long 型字面值,10uL为unsigned long 型字面值,012 为八进制表示的int 型字面值,0xC 为十六进制表示的int 型字面值。

(c) 3.14,3.14f,3.14L3.14 为double 型字面值,3.14f 为float 型字面值,3.14L 为long double 型字面值。

习题2.8确定下列字面值常量的类型:(a) –10 (b) -10u (c) -10. (d) -10e-2【解答】(a) int 型(b) unsigned int 型(c) double 型(d) double 型习题2.9下列哪些(如果有)是非法的?(a) "Who goes with F\145rgus?\012"(b) 3.14e1L (c) "two" L"some"(d) 1024f (e) 3.14UL(f) "multiple linecomment"【解答】(c) 非法。

因为字符串字面值与宽字符串字面值的连接是未定义的。

(d) 非法。

因为整数1024 后面不能带后缀f。

(e) 非法。

因为浮点字面值不能带后缀U。

(f) 非法。

因为分两行书写的字符串字面值必须在第一行的末尾加上反斜线。

习题2.10使用转义字符编写一段程序,输出2M,然后换行。

修改程序,输出2,跟着一个制表符,然后是M,最后是换行符。

【解答】输出2M、然后换行的程序段:// 输出"2M"和换行字符std::cout << "2M" << '\n';修改后的程序段:// 输出'2', '\t', 'M'和换行字符std::cout << '2' << '\t' << 'M' << '\n';习题2.11编写程序,要求用户输入两个数——底数(base)和指数(exponent),输出底数的指数次方的结果。

【解答】#include <iostream>int main(){// 局部对象int base, exponent;long result=1;// 读入底数(base)和指数(exponent)std::cout << "Enter base and exponent:" << std::endl;std::cin >> base >> exponent;if (exponent < 0) {std::cout << "Exponent can't be smaller than 0" << std::endl;return -1;}if (exponent > 0) {// 计算底数的指数次方for (int cnt = 1; cnt <= exponent; ++cnt)result *= base;}std::cout << base<< " raised to the power of "<< exponent << ": "<< result << std::endl;return 0;}习题2.12区分左值和右值,并举例说明。

【解答】左值(lvalue)就是变量的地址,或者是一个代表“对象在内存中的位置”的表达式。

右值(rvalue)就是变量的值,见2.3.1 节。

变量名出现在赋值运算符的左边,就是一个左值;而出现在赋值运算符右边的变量名或字面常量就是一个右值。

例如:val1=val2/8这里的val1 是个左值,而val2 和8 都是右值。

习题2.13举出一个需要左值的例子。

【解答】赋值运算符的左边(被赋值的对象)需要左值,见习题2.12。

习题2.14下面哪些(如果有)名字是非法的?更正每个非法的标识符名字。

(a) int double = 3.14159; (b) char _;(c) bool catch-22; (d) char 1_or_2 ='1';(e) float Float = 3.14f;【解答】(a) double 是C++语言中的关键字,不能用作用户标识符,所以非法。

此语句可改为:double dval = 3.14159;。

(c) 名字catch-22 中包含在字母、数字和下划线之外的字符“-”,所以非法。

可将其改为:catch_22;。

(d) 名字1_or_2 非法,因为标识符必须以字母或下划线开头,不能以数字开头。

可将其改为:one_or_two;。

习题2.15下面两个定义是否不同?有何不同?int month = 9, day = 7;int month =09, day = 07;如果上述定义有错的话,那么应该怎样改正呢?【解答】这两个定义不同。

前者定义了两个int 型变量,初值分别为9 和7;后者也定义了两个int 型变量,其中day 被初始化为八进制值7;而month 的初始化有错:试图将month 初始化为八进制值09,但八进制数字范围为0~7,所以出错。

可将第二个定义改为:int month =011, day = 07;习题2.16假设calc 是一个返回double 对象的函数。

下面哪些是非法定义?改正所有的非法定义。

(a) int car = 1024, auto = 2048;(b) int ival = ival;(c) std::cin >> int input_value;(d) double salary = wage = 9999.99;(e) double calc = calc();【解答】(a) 非法:auto 是关键字,不能用作变量名。

使用另一变量名,如aut 即可更正。

(c) 非法:>>运算符后面不能进行变量定义。

改为:int input_value;std::cin >> input_value;(d) 非法:同一定义语句中不同变量的初始化应分别进行。

改为:double salary = 9999.99, wage = 9999.99;注意,(b)虽然语法上没有错误,但这个初始化没有实际意义,ival 仍是未初始化的。

习题2.17下列变量的初始值(如果有)是什么?std::string global_str;int global_int;int main(){int local_int;std::string local_str;// ...return 0;【解答】global_str 和local_str 的初始值均为空字符串,global_int 的初始值为0,local_int 没有初始值。

习题2.18解释下列例子中name 的意义:extern std::string name;std::string name("exercise 3.5a");extern std::string name("exercise 3.5a");【解答】第一条语句是一个声明,说明std::string 变量name 在程序的其他地方定义。

第二条语句是一个定义,定义了std::string 变量name,并将name 初始化为"exercise 3.5a"。

相关文档
最新文档