null第二章 数据描述第二章 数据描述预备知识
数据类型
常量与变量
不同类型数据间的转换
运算符和
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式null2.0 预备知识
计算机中数的表示及进制转换
数码、基与权
数码:表示数的符号
基:数码的个数
权:每一位所具有的值
数制null各种进制之间的转换
二进制、八进制、十六进制转换成十进制
方法:按权相加null各种进制之间的转换(整数)
二进制、八进制、十六进制转换成十进制
方法:按权相加十进制转换成二进制、八进制、十六进制
原理:方法:连续除以基,从低到高记录余数,直至商为0null二进制与八进制之间的转换
二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制
八进制转换成二进制:用3位二进制数代替每一位八进制数例 (1101001)2=(001,101,001)2=(151)8例 (246)8=(010,100,110)2=(10100110)2000 ~ 0
001 ~ 1
010 ~ 2
011 ~ 3
100 ~ 4
101 ~ 5
110 ~ 6
111 ~ 7null二进制与十六进制之间的转换
二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制
十六进制转换成二进制:用4位二进制数代替每一位十六进制数例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)20000 ~ 0
0001 ~ 1
0010 ~ 2
0011 ~ 3
0100 ~ 4
0101 ~ 5
0110 ~ 6
0111 ~ 7
1000 ~ 8
1001 ~ 9
1010 ~ A
1011 ~ B
1100 ~ C
1101 ~ D
1110 ~ E
1111 ~ Fnull问题:
十进制数-2248转换为十六进制数?null字节和位
内存以字节为单元组成
每个字节有一个地址
一个字节一般由8个二进制位组成
每个二进位的值是0或1null数值的表示方法——原码、反码和补码
原码:最高位为符号位,其余各位为数值本身的绝对值
反码:
正数:反码与原码相同
负数:符号位为1,其余位对原码取反
补码:
正数:原码、反码、补码相同
负数:最高位为1,其余位为原码取反,再对整个数加19-5=4
9+7=16=(14)12从上午9点到下午4点相差几个小时?null负数补码转换成十进制数:最高位不动,其余位取反加1例 11111001表示的数?
高位1所以是负数补码。
补码:11111001
取反:10000110
加1: 10000111=-7例 -7的补码表示(一个字节8位表示)
因为是负数所以高位是1,所以先去掉负号看7的表示编码(高位不用,实际上已经定义为1负数,0正数)
原码 0 0000111=7
取反(补码): 1111000
加1 1111001
补高位: 1 1111001=-7(实际是+10000000=128)null2.1 数据类型
数据类型总表数据类型决定:
1. 数据占内存字节数
2. 数据取值范围
3. 其上可进行的操作null基本数据类型整型字符型实型有无说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:null2.2 常量与变量
标识符
定义:用来标识变量、常量、函数等的字符序列
组成:
只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线
大小写敏感
不能使用关键字
长度:最长32个字符
命名原则:
见名知意
不宜混淆 如l与I, o与0例:判断下列标识符号合法性
sum Sum M.D.John day Date 3days
student_name #33 lotus_1_2_3
char a>b _above $123M.D.John3days#33char$123a>bnull
一般用大写字母
是宏定义预处理命令,不是C语句
直接常量:
整型常量
实型常量
字符常量
字符串常量如 #define PRICE 30常量
定义:程序运行时其值不能改变的量(即常数)
分类:
符号常量:用标识符代表常量
定义格式: #define 符号常量 常量>>>>例 符号常量举例(ch2_1.c)
#define PRICE 30
main()
{
int num,total;
num=10;
total=num*PRICE;
printf("total=%d",total);
}运行结果:total=300null整型常量(整常数)
三种形式:
十进制整数:由数字0~9和正负号表示.如 123,-456,0
八进制整数:由数字0开头,后跟数字0~7表示.如0123,011
十六进制整数:由0x开头,后跟0~9,a~f,A~F表示. 如0x123,0Xff例 12 与 12L例 30000 为int型
65536 为long int 型整型常量的类型
根据其值所在范围确定其数据类型
在整常量后加字母l或L,认为它是long int 型常量问题:
0123 = ( )10
0x123 = ( )10
0Xff = ( )10null实型常量(实数或浮点数)
表示形式:
十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123.
指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 实型常量的类型
默认double型
在实型常量后加字母f或F,认为它是float 型null字符常量
定义:用单引号括起来的单个普通字符或转义字符. 字符常量的值:该字符的ASCII(American Standard Code for Information Interchange)码值如 ‘\101’ -----------‘A’ ‘\012’ -----------’\n’
‘\376’ -----------’’ ‘\x61’ -----------’a’
‘\60’ -----------’0’ ‘\483’ ----------()例:
‘A’-------’\101’-------’\x41’--------65如 ‘A’——65, ‘a’——97,
‘0’——48 , ‘\n’——10如 ‘a’ ‘A’ ‘?’ ‘\n’ ‘\101’转义字符:反斜线后面跟一个字符或一个代码值表示例 转义字符举例(ch2_001.c,ch2_004.c)
main()
{
printf("\101 \x42 C\n");
printf("I say:\"How are you?\"\n");
printf("\\C Program\\\n");
printf("Turbo \'C\'");
}运行结果:(屏幕显示)
A B C
Isay:”How are you?”
\C Program\
Turbo ‘C’例 main()
{ printf(“Y\b=\n”);
}运行结果:
屏幕显示:=
打印机输出:¥null字符常量与字符串常量不同字符串常量
定义:用双引号(“”)括起来的字符序列
存储:每个字符串尾自动加一个 ‘\0’ 作为字符串结束标志例: char ch;
ch=“A”; null变量
概念:其值可以改变的量
变量名与变量值
变量定义的一般格式:
数据类型 变量1[,变量2,…,变量n];变量初始化:定义时赋初值 例:
int a,b,c;
float data;决定分配字节数
和数的表示范围合法标识符例:
int a=2,b,c=4;
float data=3.67;
char ch=‘A’;
int x=1,y=1,z=1;
int x=y=z=1;变量的使用:先定义,后使用例1
int student;
stadent=19; //Undefined symbol ‘statent’ in function main 例2
float a,b,c;
c=a%b; //Illegal use of floating point in function main 变量定义位置:一般放在函数开头Ch2_005.cnull整型变量
占字节数随机器不同而不同,一般占一个机器字
short≤int≤long
可用sizeof(类型标识符)测量实型变量
float:占4字节,提供7位有效数字
double:占8字节,提供15~16位有效数字字符型变量
字符变量存放字符ASCII码
char与int数据间可进行算术运算例 float a;
a=111111.111; /* a=111111.1*/
double b;
b=111111.111; /* b=111111.111*/例 a=‘D’; /* a=68; */
x=‘A’+5; /* x=65+5; */
s=‘!’+‘G’ /* s=33+71; */没有字符串变量,用字符数组存放Ch2_006.cnull例 /*ch2_003.c*/
#define PRICE 12.5
main()
{ int num=3;
float total;
char ch1,ch2=‘D’;
total=num*PRICE;//3*12.5
ch1=ch2-‘A’+‘a’;//68-65+97=100->’d’
printf(“total=%f,ch1=%c\n”,total,ch1);
}运行结果:
total=37.500000, ch1=dnull2.3不同类型数据间的转换
隐式转换
什么情况下发生
运算转换------不同类型数据混合运算时
赋值转换------把一个值赋给与其类型不同的变量时
输出转换------输出时转换成指定的输出格式
函数调用转换------实参与形参类型不一致时转换
运算转换规则:不同类型数据运算时先自动转换成同一类型nullnull显式转换(强制转换)
一般形式:(类型名)(表达式)
例 (int)(x+y)
(int)x+y
(double)(3/2)
(int)3.6
说明:强制转换得到所需类型的中间变量,原变量类型不变 例 main()
{ float x;
int i;
x=3.6;
i=(int)x;
printf(“x=%f,i=%d”,x,i);
}
结果:x=3.600000,i=3精度损失问题Ch2_007.cCh2_008.cnull2.4 运算符和表达式null学习运算符应注意:
运算符功能
与运算量关系
要求运算量个数
要求运算量类型
运算符优先级别
结合方向
结果的类型
null算术运算符和表达式
基本算术运算符: + - * / %
结合方向:从左向右
优先级: - ---->* / % -----> + -
(2) (3) (4)
说明:
“-”可为单目运算符时,右结合性
两整数相除,结果为整数
%要求两侧均为整型数据
例 5/2 =
-5/2.0 =例 5%2 =
-5%2 =
1%10 =
5%1 =
5.5%2例 5/2 = 2
-5/2.0 = -2.5例 5%2 = 1
-5%2 = -1
1%10 = 1
5%1 = 0
5.5%2 ()null自增、自减运算符++ --
作用:使变量值加1或减1
种类:
前置 ++i, --i (先执行i+1或i-1,再使用i值)
后置 i++,i-- (先使用i值,再执行i+1或i-1)例 j=3; k=++j;
j=3; k=j++;
j=3; printf(“%d”,++j);
j=3; printf(“%d”,j++);
a=3;b=5;c=(++a)*b;
a=3;b=5;c=(a++)*b; //k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4null自增、自减运算符++ --
作用:使变量值加1或减1
种类:
前置 ++i, --i (先执行i+1或i-1,再使用i值)
后置 i++,i-- (先使用i值,再执行i+1或i-1)说明:
++ -- 不能用于常量和表达式,如5++,(a+b)++
++ --结合方向: 自右向左
优先级:- ++ -- ------>* / % ----->+ -
(2) (3) (4)例 -i++ -(i++)
i=3; printf(“%d”,-i++); //-3 例 -i++
i=3; printf(“%d”,-i++); Ch2_009.cnull赋值运算符和表达式
简单赋值运算符
符号: =
格式: 变量标识符=表达式
作用:将一个数据(常量或表达式)赋给一个变量复合赋值运算符
种类:+= -= *= /= %= 《= 》= &= ^= |=
含义: exp1 op= exp2 exp1 = exp1 op exp2例 a=3;
d=func();
c=d+2;null说明:
结合方向:自右向左
优先级: 14
左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例 3=x-2*y;
a+b=3;例 float f;
int i;
i=10;
f=i;
则 f=10.0例 int i;
i=2.56; //结果i=2;例: a=b=c=5
a=(b=5)
a=5+(c=6)
a=(b=4)+(c=6)
a=(b=10)/(c=2)//表达式值为5,a,b,c值为5// b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=2null说明:
结合方向:自右向左
优先级: 12
左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例: a=12;
a+=a-=a*a例: int a=2;
a%=4-1;
a+=a*=a-=a*=3; //a=-264 等价于a=a+(a=a-(a*a))//a=0 等价于a=a+(a=a*(a=a-(a=a*3)))null逗号运算符和表达式
形式:表达式1,表达式2,……表达式n
结合性:从左向右
优先级: 15
逗号表达式的值:等于表达式n的值
用途:常用于循环for语句中例 a=3*5,a*4
a=3*5,a*4,a+5
例 x=(a=3,6*3)
x=a=3,6*a
例 a=1;b=2;c=3;
printf(“%d,%d,%d”,a,b,c);
printf(“%d,%d,%d”,(a,b,c),b,c);
//a=15,表达式值60//a=15,表达式值20//赋值表达式,表达式值18,x=18//逗号表达式,表达式值18,x=3//1,2,3//3,2,3null逗号运算符和表达式
形式:表达式1,表达式2,……表达式n
结合性:从左向右
优先级: 15
逗号表达式的值:等于表达式n的值
用途:常用于循环for语句中例:
/*ch2_6.c*/
#include
main()
{ int x,y=7;
float z=4;
x=(y=y+6,y/z);
printf("x=%d\n",x);
}运行结果:x=3null关系运算符和表达式
关系运算符
种类:< <= == >= > !=
结合方向:自左向右
优先级别:例 c>a+b //c>(a+b)
a>b!=c //(a>b)!=c
a==bc //a=(b>c)
关系表达式的值:是逻辑值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f;
a>b
(a>b)==c
b+cb
f=a>b>c//表达式值1//表达式值1//表达式值0//d=1//f=0null关系运算注意:例 若a=0; b=0.5; x=0.3;
则 a<=x<=b的值为 0例 5>2>7>8在C中是允许的,
值为0例 int i=1, j=7,a;
a=i+(j%4!=0);
则a=2例 ‘a’>0 结果为
‘A’>100 结果为10null关系运算注意:例 注意区分“=”与“==”
int a=0,b=1;
if(a=b)
printf(“a equal to b”);
else
printf(“a not equal to b”);例 应避免对实数作相等或不等的判断
如 1.0/3.0*3.0==1.0 结果为
可改写为:fabs(1.0/3.0*3.0-1.0)<1e-60null逻辑运算符和表达式
逻辑运算符
种类: ! && ||
逻辑运算真值表C语言中,运算量: 0表示“假”,
非0表示“真”,
运算结果: 0表示“假”,
1表示“真”,
null例 a<=x && x<=b
a>b&&x>y
a==b||x==y
!a||a>b
优先级:结合方向:// (a<=x) && (x<=b) //(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)null优先级:结合方向:例 a=4;b=5;
!a
a&&b
a||b
!a||b
4&&0||2
5>3&&2||8<4-!0
‘c’&&‘d’值为1值为0值为1值为1值为1值为1//(5>3)&&2||(8<(4-(!0))) 值为1null优先级:结合方向:短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符<>例 a&&b&&c //只在a为真时,才判别b的值;
只在a、b都为真时,才判别 c的值
例 a||b||c //只在a为假时,才判别b的值;
只在a、b都为假时,才判别 c的值
例 a=1;b=2;c=3;d=4;m=1;n=1;
(m=a>b)&&(n=c>d)
//结果m=0,n=1null条件运算符与表达式
一般形式: expr1 ? expr2 : expr3
执行过程
功能:相当于条件语句,但不能取代一般if语句例 求 a+|b|
printf(“a+|b|=%d\n”,b>0?a+b:a-b);例 (a==b)?’Y’:’N’
(x%2==1)?1:0
(x>=0)?x:-x
(c>=‘a’ && c<=‘z’)?c-’a’+’A’:c条件运算符可嵌套
如 x>0?1:(x<0?-1:0)
优先级: 13结合方向:自右向左
如 a>b?a:c>d?c:d a>b?a:(c>d?c:d)
expr1、expr2、expr3类型可不同,表达式值取较高的类型例 x?‘a’:‘b’ //x=0,表达式值为‘b’; x‡0,表达式值为‘a’
x>y?1:1.5 //x>y ,值为1.0; x
本文档为【02数据描述】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。