C语言程序设计基础刘新国第六章数据类型和表达式6.
1数据的存储和基本数据类型6.
2常量和变量6.
3数据的输入和输出6.
4类型转换6.
5表达式C语言的数据类型基本数据类型整型实型(浮点型)字符型构造数据类型数组、结构、联合、枚举指针类型空类型(void)一、基本数据类型的存储整型实型字符型整型数据存储整数的第一位bit用于表示整数的符号1-负数0-正数10000001100000010000000110000001原码、反码、补码正数的原码、反码和补码相同1的补码0000000000000001……32767的补码0111111111111111(215-1,2个字节的存储单元能表示的最大正数)负数的原码、反码和补码不同-1原码1000000000000001反码1111111111111110原码取反补码1111111111111111反码+1原码反码补码32767补码0111111111111111-32767原码1111111111111111反码1000000000000000原码取反补码1000000000000001反码+1-32768=-32767-1补码1000000000000000=-215,2个字节的存储单元能表示的最小负数-32768-10132767327670111111111111111327660111111111111110327650111111111111101……1000000000000000100000000000000000-11111111111111111-21111111111111110……-327671000000000000001-32768100000000000000032767+1=0111111111111111+1=100000000000000(-32768)-32768-1=1000000000000000-1=0111111111111111(32767)浮点型数据存储实型数据的存储x=±m*rem–尾数r–基数e–阶码IEEE标准规定,常用的浮点数的格式为:符号位阶码尾数总位数短浮点数182332浮点数1115264临时浮点数1156480字符型数据存储占据一个字节存储ASCII码二、基本数据类型整型有符号整型无符号整型数据长度intunsigned[int]16或32位short[int]unsignedshort[int]16位long[int]unsignedlong[int]32位字符型char8位实型(浮点型)单精度浮点型float32位双精度浮点型double64位基本数据类型-整型扩展的整数类型:short,long,unsigned[int]有符号整型无符号整型数据长度intunsigned[int]16或32位short[int]unsignedshort[int]16位long[int]unsignedlong[int]32位short(有符号)1000000000000000-32768(-215)011111111111111132767(215-1)unsignedshort(无符号)00000000000000000111111111111111165535(216-1)整数类型的取值范围int32位[-231,231-1]short[int]16位[-215,215-1]long[int]32位[-231,231-1]unsigned[int]32位[0,232-1]unsignedshort[int]16位[0,216-1]unsignedlong[int]32位[0,232-1]基本数据类型-字符型小写字母:'a''b''c'…'z'大写字母:'A''B''C'…'Z'数字:'0''1''2'…'9'括号、标点符号、运算符等等基本数据类型-字符型转义字符换行符\n制表符\t反斜杠\\双引号\"单引号\'\ddd1-3位八进制码代表的字符\xhh1-2位十六进制码代表的字符附录B(ASCII码表,P334)%就是%,不是\%.
但是在scanf和printf函数的控制字符串中,%具有特殊作用(将其后的字符解释为格式字符),所以用%%表示字符%本身基本数据类型-字符型字符具有数值特征(值为ASCII码的整数)'A'6501000001适用算术运算、关系运算整型变量和字符变量的定义和赋值可以互换【ASCII码范围】charc;c='A';或c=65;c+1就是字符'B'基本数据类型-实型实型(浮点型)数据单精度浮点型float双精度浮点型double存储数据精度取值范围(有效数字)float4字节7/8位±(10-38-1038)double8字节16位±(10-308-10-308)数据精度和取值范围数据精度与取值范围是两个不同的概念:floatx=1234567.
89;虽在取值范围内,但无法精确表达.
floaty=1.
2e55;y的精度要求不高,但超出取值范围.
并非所有实数都能在计算机中精确表示实数的常量表示普通表示-12345.
678符号+整数部分+小数点+小数部分科学计数法表示-1.
2345678E5实型常量的类型都是double用f作为后缀,表示浮点数常量3.
14f三、数据的输入输出printf(格式控制字符串,输出参数1,.
.
.
,输出参数n);scanf(格式控制字符串,输入参数1,.
.
.
,输入参数n);格式控制字符串"%d%f%c""k=%d,x=%f,h=%c"格式控制说明符%字符char:%c实数float:%f实数doulbe:%lf整数int:%d整型数据的输入输出扩展整数的格式控制符十进制八进制十六进制int%d%o%xlong%ld%lo%lxunsigned%u%o%xunsignedlong%lu%lo%lx【示例】整型数据输出格式#includevoidmain(void){printf("%d,%o,%x\n",10,10,10);printf("%d,%d,%d\n",10,010,0x10);printf("%d,%x\n",012,012);}运行结果是什么10,12,a10,8,1610,a输出格式的宽度控制inta,b;scanf("%o%d\n",&a,&b);printf("%d%5d\n",a,b);如果输入1717那么运行结果是什么1517宽度控制%md表示:数据输出的宽度为m(包括符号位).
若实际宽度不足m个,左边补充空格.
若大于m,则按照实际宽度输出.
实型数据的输入和输出float:%f或%e以小数或指数形式输入一个单精度浮点数double:%lf或%le以小数或指数形式输入一个双精度浮点数输出printf()float和double使用相同的格式控制说明%f:以小数形式输出浮点数,保留6位小数%e:以指数形式输出实型数据输出示例doubled=3.
1415926;printf("%f,%e\n",d,d);printf("%5.
3f,%5.
2f,%.
2f\n",d,d,d);3.
141593,3.
14159e+003.
142,3.
14,3.
14一共5位小数3位小数点1位实型数据输入输出示例/*假定float的精度为7位,double的精度为16位*/#includeintmain(void){floatf;doubled;printf("inputf,d:");scanf("%f%lf",&f,&d);printf("f=%f\nd=%f\n",f,d);d=1234567890123.
12;printf("d=%f\n",d);return0;}inputf,d:1234567890123.
1234561234567890123.
123456f=1234567954432.
000000d=1234567890123.
123540d=1234567890123.
120120字符型数据输入输出scanf()和printf()%ccharch;scanf("%c",&ch);printf("%c",ch);getchar()和putchar()charch;ch=getchar();putchar(ch);输入输出一个字符输入输出字符示例#includeintmain(void){charch1,ch2,ch3;scanf("%c%c%c",&ch1,&ch2,&ch3);printf("%c%c%c%c%c",ch1,'#',ch2,'#',ch3);return0;}AbCA#b#CAbCA##b输出字符型数据/*字符b的ASCII码98*/#includeintmain(void){charch='b';printf("%c,%d\n",'b','b');printf("%c,%d\n",98,98);printf("%c,%d\n",97,'b'-1);printf("%c,%d\n",ch-'a'+'A',ch-'a'+'A');return0;}b,98b,98a,97B,66字符运算大小写英文字母转换'B'-'b'='A'-'a'……'Z'-'z'='A'-'a'大写字母=小写字母+'A'-'a'小写字母=大写字母+'a'-'A'数字字符和数字转换9-0='9'-'0'8-0='8'-'0'……1-0='1'-'0'数字字符=数字+'0'数字=数字字符-'0'不同类型数据的混合运算,先转换为同一类型,再运算.
自动类型转换非赋值运算的类型转换赋值运算的类型转换强制类型转换三类型转换自动类型转换(非赋值运算)水平方向:自动垂直方向:低高短->长带符号->无符号自动类型转换(非赋值运算)'A'+12–10.
05657766.
95自动类型转换(赋值运算)变量=表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符右侧表达式的类型自动转换成赋值号左侧变量的类型【例子】自动转换longa=-1;unsignedlongb,c;b=a;问b=c=a+1;问c=c=c+a;问c=自动类型转换(赋值运算)doublex;x=1;x=1.
0shorta=1000;charb='A';longc;c=a+b;c=1065intai;ai=2.
56;ai=2shortbi;bi=0x12345678Lbi=0x5678强制类型转换强制类型转换运算符(类型名)表达式(double)3(int)3.
8(double)(5/2)(double)5/2五表达式表达式:由运算符和运算对象(操作数)组成的有意义的运算式子,它的值和类型由参加运算的运算符和运算对象决定.
运算符:具有运算功能的符号运算对象:常量、变量和函数等表达式算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式等表达式可以嵌套AA+BA+5*x算术表达式-算术运算符单目双目注意/整数除整数,得整数1/4=0,10/3=3%模(求余):针对整型数据5%6=5,9%4=1,100%4=0+和–单目运算符,+10和–10双目运算符,x+10和y–10双目运算符两侧操作数的类型要相同,否则,自动类型转换后,再运算.
自增运算符++和自减运算符--intn;n++++nn----n(只适合变量运算)使变量的值增1或减1++nn++n=n+1--nn--n=n-1取变量的值作为表达式的值++n:n=n+1;取n值作为表达式++n的值n++:取n值作为表达式n++的值;n=n+1自增运算和自减运算intn,m;n=2;m=++n;n=2;m=n++;结果:n为3,m为3等价于m=nm=n+1等价于n=n+1m=n结果:n为3,m为3算术运算符的优先级和结合性单目双目*/%双目+-从右向左-5+3%2=(-5)+(3%2)=-43*5%3=(3*5)%3=0-i++-(i++)写出C表达式数学式C算术表达式s(s-a)(s-b)(s-c)(x+2)e2xs*(s-a)*(s-b)*(s-c)(x+2)*exp(2*x)(-b+sqrt(b*b-4*a*c))/(2*a)赋值表达式赋值运算符=x=3*4优先级较低,结合性从右向左x=y=3x=(y=3)赋值表达式变量=表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量右侧表达式的类型自动转换成左侧变量的类型将赋值运算符左侧的变量的值作为表达式的值intn;doublex,y;n=3.
14*2;x=10/4;x=(y=3);复合赋值运算符赋值运算符简单赋值运算符=复合赋值运算符复合算术赋值运算符复合位赋值运算符赋值表达式变量赋值运算符表达式x+=expx=x+expx*=y–3x=x*(y–3)从右到左结合y=3;x=y+=5;关系表达式-关系运算符比较两个操作数,比较的结果:真假xyx>=yx!
=y优先级算术运算符==!
=赋值运算符左结合a>b==cd=a>bch>'a'+1d=a+b>c3b)==cd=(a>b)ch>('a'+1)d=((a+b)>c)(3b==cd=a>bch>'a'+1d=a+b>cb-1==a!
=c3a和b都为真a&&b为假a和b不全为真(至少一个为假)||逻辑或:a||b为真a和b不全为假(至少一个为真)!
逻辑非:!
a为真a为假!
A为假a为真a与b的逻辑运算aba&&ba||b!
a00001010111001011110逻辑运算运用判断字符ch是否为数字字符ch>='0'&&ch='0'&&ch='a'&&ch='A'&&ch='a'&&ch='A'&&ch=3&&x=3)&&(x0)x+2:x*x;if(x>0)y=x+2;elsey=x*x;z=(a>b)a:b;if(a>b)z=a;elsez=b;if(exp1)值为exp2else值为exp2逗号表达式表达式1,表达式2,……,表达式n依次计算表达式1,表达式2,……,表达式n,并将最后一个表达式的值作为逗号表达式的值.
inta,b,c;(a=2),(b=3),(c=a+b);逗号运算符的优先级最低,左结合可以不用括号:a=2,b=3,c=a+bsum=0;for(i=0;i>对操作数右移给出的位数复合位赋值运算位逻辑运算x=000000000y=300000011x&y00000000x|y00000011x^y000000111010^0101=1111注意区分:&和&&|和||~按位取反&按位与^按位异或:相同取0,不同取1|按位或位移位运算>对操作数右移给出的位数x>3将x向右移3位00111010>>300000111复合位赋值运算符&=|=^=>>=='A'&&ch='a'&&ch='A'&&ch='a'&&ch<='z')ch=ch-'a'+'A';putchar(ch);ch=getchar();}可以把(ch=getchar(n'改为ch=getchar()!
='\n'吗本章内容总结6.
1数据的存储和基本数据类型6.
2常量和变量6.
3数据的输入和输出6.
4类型转换6.
5表达式
Moack怎么样?Moack(蘑菇主机)是一家成立于2016年的商家,据说是国人和韩国合资开办的主机商家,目前主要销售独立服务器,机房位于韩国MOACK机房,网络接入了kt/lg/kinx三条线路,目前到中国大陆的速度非常好,国内Ping值平均在45MS左右,而且商家的套餐比较便宜,针对国人有很多活动。不过目前如果购买机器如需现场处理,由于COVID-19越来越严重,MOACK办公楼里的人也被感染...
mansora怎么样?mansora是一家国人商家,主要提供沪韩IEPL、沪日IEPL、深港IEPL等专线VPS。现在新推出了英国CN2 KVM VPS,线路为AS4809 AS9929,可解锁 Netflix,并有永久8折优惠。英国CN2 VPS,$18.2/月/1GB内存/10GB SSD空间/1TB流量/100Mbps端口/KVM,有需要的可以关注一下。点击进入:mansora官方网站地址m...
HostKvm也发布了开年促销方案,针对香港国际和美国洛杉矶两个机房的VPS主机提供7折优惠码,其他机房业务提供8折优惠码。商家成立于2013年,提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。下面列出几款主机配置信息。美国洛杉矶套餐:美国 US-Plan1CPU:1core内存:2GB硬盘...
转义字符为你推荐
支持ipad支持ipadipad如何上网iPad怎么上网?请高手指点127.0.0.1为什么输入127.0.0.1无法打开页面iphonewifi为什么我的苹果手机连不上wifi联通版iphone4s怎样看苹果4S是联通版还是电信版谷歌sb在谷歌里搜SB为什么结果中第一个是百度csshackcss中 *bottom是什么意思?css3按钮html点击按钮怎么弹出一个浮动的窗体www.baidu.jp日本视频怎样看
域名注册godaddy 服务器租用托管 广东服务器租用 云南服务器租用 阿里云搜索 inmotionhosting 海外服务器 10t等于多少g 空间打开慢 账号泄露 iis安装教程 线路工具 好看的桌面背景图片 服务器架设 云全民 福建天翼加速 微信收钱 bgp双线 789电视 华为云服务登录 更多