数据类型与表达式
- 格式:doc
- 大小:140.50 KB
- 文档页数:7
第一章 基本数据类型和表达式C++数据类型为什么要分数据类型 不同的数据类型存储格式不同。
不同的数据类型所实施的操作不同C++数据类型1、整形数据各种整形数据的基本情况数据类型 占用字节(跟编译器有关)数据范围short2 bytes -32768~32767 unsigned short2 bytes0~65535int 2bytes(16位机) 4 bytes(32位机) -32768~32767 -(231)~231-1 unsigned int2bytes(16位机) 4bytes(32位机)0~65535 0~232-1long 4bytes -(231)~231-1 unsigned long4 bytes0~232-1整形常量在整形常量后可加修饰符l 或L 表示长整型基本类型实型(浮点型)双精度型(double)十进制整数:以非零的数字开始123//signed int65000//unsigned int123u//unsigned int123L//singed long int八进制整数:以零开始0123=83//unsigned int011L=9//unsigned long int十六进制整数:以0X或0x开始0x123=291//signed int0X123u=291//unsigned int整型变量类型修饰符变量名[=表达式][,变量名[=表达式]]int x,y;int i=1,j=0;2字符型数据字符型数据的基本情况字符类型:在内部实现是个单字节长度的整型,因此常用字符型定义值较小的整数。
单引号括起来的一个字符如’a’,’D’,’?’,’S’字符数据在内存中的存储形式以ASCII码存储,占1字节,用7位用于表示字符时存放的是字符的ASCII码值。
数据类型占用字节数据范围char 1Byte -128~127 unsigned char 1Byte 0~255转义字符转义序列对应ASCII码值对应功能或字符转义序列对应ASCII码值对应功能或字符\b 8 退格\’39 单引号\f 12 换页\’’34 双引号\n 10 换行\? 63 问好\r 13 回车\ccc ccc为八进制值该值对应的字符\t 9 水平制表\\xhh hh为十六进制值该值对应的字符字符变量用来存放字符常量例:char c1,c2;c1=’a’;c2=’A’;字符型和整形的关系字符数据和整形数据之间可以通用,可以按字符形式输出,也可以按整形输出。
第二章 数据类型、运算符、表达式一、数据类型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 位二进制(二个字节)表示。
实验报告_实验 2 数据类型与表达式(学生学号__姓名)一、实验目的:1、熟悉基本数据类型(int、char、float、double)占用的字节数和存储形式,能够定义基本数据类型的变量,使用这些类型的数据;2、掌握字符数据的存储形式及其与整数的运算,能正确理解“字符数据”与“字符串”的区别与联系,熟悉常用转义字符的使用;3、熟悉字符常量与一般常量的定义、使用;4、掌握算术运算符(重点是/和%)、自增(++)和自减(--)运算符的使用,能够构建正确的表达式,并输出其结果;5、理解不同类型数据之间运算时的类型转换规则,掌握强制类型转换的方法。
二、实验内容1、(基础题)用sizeof运算符可以得到各种类型数据占用存储单元长度,利用数据间的关系和不同控制符,可以得到查看数据的存储形式。
回答下列问题:#include<stdio.h>int main(){char ch1,ch2;ch1='A';ch2=ch1+32;printf("ch1的ASCII:%d, ch2的ASCII:%d, ch2对应的字母:%c\n",ch1,ch2,ch2);int i1,i2;i1='n'; //将字符数据赋值给整型变量i2=i1-32;printf("i1的值:%d, i2的值:%d, i2对应的字母:%c\n",i1,i2,i2);printf("字母:%c%c%c\n",'A'+2,'A'+1,'A');//后续字符=首字符+nprintf("数字:%c%c%c\n",'0'+3,'0'+1,'0'+5);//后续字符=首字符+nprintf("字符间距离:%d,%d,%d\n",'z'-'a','9'-'6','z'-'6');//字符间距离=较大字符-较小字符return 0;}(1)sizeof运算符如何使用?它的操作数可以是类型关键字吗?答:可用sizeof(类型名或数据) 来获取该类型数据所占字节数。
可以(2)整数的占用长度与其数值大小有关吗?答:有(3)字符串中’\’’、’\n’、’\t’的功能各是什么?答:功能分别为:单引号,换行,水平制表(4)字符串的一个英文字母占几个字节?一个汉字占几个字节?尾部还有什么字符?答: 字符串的一个英文字母占1个字节,一个汉字占4个字节,尾部有一个字符串结束符‘\0’(5)整数的存储形式是什么?答:二进制补码2、(基础题)字符数据以整数方式(ASCII)存储的,可以与整数进行+、-运算,既可以用“字符”方式输出,也可以用“整数”方式输出。
回答下列问题:#include<stdio.h>int main(){char ch1,ch2;ch1='A';ch2=ch1+32;printf("ch1的ASCII:%d, ch2的ASCII:%d, ch2对应的字母:%c\n",ch1,ch2,ch2);int i1,i2;i1='n'; //将字符数据赋值给整型变量i2=i1-32;printf("i1的值:%d, i2的值:%d, i2对应的字母:%c\n",i1,i2,i2);printf("字母:%c%c%c\n",'A'+2,'A'+1,'A');//后续字符=首字符+nprintf("数字:%c%c%c\n",'0'+3,'0'+1,'0'+5);//后续字符=首字符+nprintf("字符间距离:%d,%d,%d\n",'z'-'a','9'-'6','z'-'6');//字符间距离=较大字符-较小字符return 0;}(1)字符数据在内存中是以什么方式存储的?答: ASCII码(2)字符数据与整型数据能相互赋值、运算吗?如何以“整数”方式和“字符”方式输出字符?答:能;%d输出整数,%c输出字符(3)大小写字母的ASCII有什么关系?(如:‟G‟与‟g‟)答: 大小写字母的ASCII码相差32(4)如何由‟A‟、‟a‟分别得到后续的大写字母、小写字母?答:'A'+1,'a'+1(5)字符间的距离如何计算?由一字符能分别得到ASCII比它小5、大10的两个字符吗?若能,如何得到?答:两字符的ASCII值的差的绝对值,'A'-5 ,'A'+10(6)说明“C”与‟c‟的联系与区别,能否写成”dog”、‟boy‟?答:“c”表示的是字符串c;…c‟表示的是字符;“dog”写法正确;‟boy‟写法错误3、(基础题)符号常量与常变量(即用const关键字定义)的使用:回答问题:#include<stdio.h>#define PI 3.14int main(){float radius,area,volume;printf("请?输º?入¨?半ã?径?:");scanf("%f",&radius);area=PI*radius*radius;volume=4*PI*radius*radius*radius/3.0;printf("半ã?径?=%f\n圆2面?积y=%f\n球¨°的Ì?体¬?积y=%f\n",radius,area,volume);return 0;}(1)写出用符号常量定义PI的格式;#define PI 3.14(2)写出用“常变量”方式定义PI值的语句。
Const float PI=3.14;4、(基础题)运行下列程序,体会/、%运算符的用法:回答下列问题:#include<stdio.h>{int n1=7,n2=2;float f1=7.0,f2=2.0;printf ("整数相除,得到商数:%d\n",n1/n2);printf ("整数求余,得到余数:%d\n\n",n1%n2);printf ("正负整数相除,得到商数:%d\n",(-n1)/n2);printf ("正负整数求余,得到余数:%d\n\n",(-n1)%n2);printf ("两个浮点数相除,得到商数:%f\n",f1/f2);printf ("浮点数除以整数,得到商数:%f\n",f1/n2);printf ("整数除以浮点数,得到商数:%f\n",n1/f2);return 0;}(1)运算符/的操作数有什么要求?答:被除数不能为0;(2)如何利用%判定整数的奇偶性?答:整数a,使a%2,若结果为0,则为偶数,反之则为奇数;5、(基础题)先分析下列代码,再运行,体会++、--运算符的用法。
并回答下列问题:#include<stdio.h>int main( ){int i, j, m, n,sum;i = 3;j = 7;//位置1m = ++i;n = j++;//位置3sum = (i++)+(++j)+(m--)+(--n);printf ("i=%d, j=%d, m=%d, n=%d, sum=%d\n",i,j,m,n,sum);return 0;}请比较++、--运算符的前缀式与后缀式的异同点。
答:相同点:运算过后变量的值都会发生改变;不同点:前缀式是变量的值先加减,再用来运算;后缀式是先取变量的值进行运算,再进行变量的值的加减;6、(提高题)求出下列算术表达式的值,并上机验证结果:x+a%3*(int)(x+y)%2/4 设x=2.5,y=4.7,a=7验证结果:#include<stdio.h>#include<stdlib.h>int main(){float x;float y;int a;x=2.5;y=4.7;a=7;printf("x+a%3*(int)(x+y)%2/4运?算?结¨¢果?:%.2f\n",x+a%3*(int)(x+y)%2/4);system("pause");return 0;}(float)(a+b)/2-(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5验证结果:#include<stdio.h>#include<stdlib.h>int main(){int a=2;int b=3;float x=3.5;float y=2.5;printf("(float)(a+b)/2-(int)x%(int)y运?算?结¨¢果?:%.2f\n",(float)(a+b)/2-(int)x%(int)y);system("pause");return 0;}'a'+x%3+5/2-'\24'验证结果:#include<stdio.h>#include<stdlib.h>int main(){int x=8;printf("'a'+x%3+5/2-'\24'运?算?结¨¢果?:%.2d\n",'a'+x%3+5/2-'\24'); system("pause");return 0;}。