C语⾔基础第三课——基本的数据与运算——整型(int)实型(float、double)
与字。。。
之前那两篇是emmmm5.19写的,感觉有点没有那么的规范条理,⽽且我也记不太住以前写的啥了,所以emmmm,以后的⽂章就尽量写的规范⼀些吧。
⼀、基本的数据与运算——整型、实型与字符型数据
1.整型
1.
2. C语⾔中可以有⼗进制整数:如129、-129等。
⼋进制整数:以0打头。如0123、-0123等
网页float是什么意思⼗六进制整数:以0x打头。如0x12a、-0X12a等
就是没有⼆进制
管他⼏进制呢只要输出的时候在printf语句⾥⾯加以限制,咱喜欢让他⼏进制形式就给它转换成⼏进制形式。(最常⽤的%d就是⼗进制整数)
2.实型
3. 分类:
(1)按照有⽆符号位,分为有符号整型和⽆符号整型两⼤类。有符号的话,最⾼位表⽰符号位,⽐如10000001就是-1的意思,最⾼位是符号位,剩下的为数是数值位。这样数就有±了,如果没有符号位,就都是正数了,这样正数的范围也就扩⼤了。0正1负(2)按照整型数据在内存中的长度分为基本整型、短整型、长整型三种。
组合⼀下
在C语⾔中,int型数据在内存中的存储形式是(补码)
4. 实数——浮点数——实型变量/常量
⼗进制⼩数形式:例如: 123.45、 -.123、0.0等。
⼗进制指数形式(科学计数法):例如: 123e-3(或123E-3),(这⾥E跟e都⾏,因为这⾥不区分⼤⼩写)即123x10-3。
注意:尾数部分不能省略,指数部分为整数。
错例:
e-6(正确应为:1E-6,这个⽐较容易忘掉),
1.23e3.5(这个就是⼩数点左移移动位数,移动3.5位也不太合适对吧)
1.5E(指数没有啊)
.2E1(指数是1,不能够省略的,这个是正确的啊)
5.
到底选择啥样的,看题⽬要求跟⾃⼰决定了啊,做题的话,他给的范围是很宽的,⼀般来说⽤double也不会出事。
6. 实数在内存中⼀律以⼆进制指数形式存储,取值范围⽐整数⼤。
7. 实型数据在内存中存储的⼆进制位数是有限度的,例如float型数据在内存中只能存储24位⼆进制⼩
数。将⼀个⼗进制实数转化为⼆进
制形式时,其有效数字位数可能会超出这个长度,
从⽽导致有效数字丢失⽽产⽣误差。
有的时候吧,你定义了⼀个实数(⼩数),然后⽤实型格式输出这个数的时候,会出现数改变的情况,可以试着玩⼀下
3.字符型
1. 字符型常量:
单个的ASCIl码字符,在程序中⽤⼀对单引号括起来。
例如: ‘a’、 ‘$’、 ‘=’、 ‘+’、’?'等。
就是这个‘’很多⼈容易漏掉,然后错误还不出来,接着就是死胡同了。。。。。
错例:'中’、 'π’等(不是ASCLL码值)
2. ⽤于表⽰特殊字符。
例如:’\n’–换⾏符 (这是个反斜杠)
注意:本质上转义字符是⼀个字符。
3.
4. 数字形式转义字符
‘\qqq’——代表ASCII码值为⼋进制数qqq的字符。(1-3位)
例如: ‘101’。
代表ASCII码值是⼋进制数101 (⼆进制数0100 0001)的字符。即’A’。
‘xhh’—代表ASCII码值为⼗六进制数hh的字符。(⼀个x,⼀到两位⼗六进制数)例如:‘x61’
代表ASCII码值是⼗六进制数61 (⼆进制数0110 0001) 的字符。
即’a’。
这种操作懂就好了,⽤的⼏率不⼤,考的⼏率估计也也不⼤
5. 字符型变量⽤来存放字符型常量。
⼀个字符型变量中, 只能存放⼀个字符型常量。
⽤char。例如:char ch;ch=‘A’;
以⼆进制ASCII码形式存储,长度为1个字节
例如:字符’A’的内存形式是0100 0001
对⽐:int——补码,字符——ASCII码
6. 字符串:
字符(包括汉字等字符)的序列,在程序中⽤⼀对双引号括起来。
例如:“How are you”、“中国”、“a”、“ ”(空字符串,⼀般占位置啊啥的会⽤)⼆、scanf函数
scanf("%f",&a);
%f就是指定格式,&就是给变量取地址(个房⼦)
这个地⽅就得注意啥在" "⾥⾯,啥在外⾯,在前两篇⾥⾯我记得写过scanf函数,还⽐较详细,可以去翻⼀下看看。
⼀般来说,函数执⾏到了这条语句,就会停⽌等着你输⼊。
就感觉提完了数据类型不提个输⼊输出的不太好,然后就写了点。。。
这个看懂了以后,得⾃⼰去做出来才⾏,它是⼀个实操性很强的东西,你隔上⼏个周不敲代码,然后就会发现⼿⽣了。
三、基本的数据与运算——算术运算符和算术表达式
1. 程序的基本功能是处理数据,对数据的处理是通过各种运算实现的。
2. 基本运算符:+ (加)、-(减)、*(乘)、/(除)、%(求余数)、+ (取正)、-(取负)
双⽬运算符可以简单理解为运算对象的个数为两个:a+b两个
-a⼀个
所以+ (取正)、-(取负)是单⽬运算符
3. 4/3=1
C语⾔规定:在⼆元运算中,结果的类型与参与运算的运算量的类型相同。两个整数相除的结果是⼀个整数,因此4/3的结果为1。
这种取整⽅法称为截断取整(或向零取整),即直接截取数学运算结果的整数部分。
如果改成4.0/3.0呢,因为都是实型变量,所以结果也是是实数,只要有⼀个就⾏,结果会取最⼤范围的(⽐如有实数,结果就是实数,float跟double在⼀起的时候,取的是double),我在之前的博客⾥⾯写过这个,⼤家可以去看⼀下。
4. 求余数运算只能⽤于两个整型数据之间,且余数总是与被除数同号。
例如:
20%3= 2、-20%3=-2、20%-3=2、-20%-3=-2、公式: m%n= m-m/n*n
5. 例题
从键盘输⼊⼀个四位正整数,分离出它的各位上的数字并输出。
根据整除运算和求余数运算的特点,即可分离出正整数各位上的数字。
/跟%在题⽬⾥⾯主要就是这么考,⼤数取余得到个位,⼤数/10在取余得到⼗位
d1=n%10;//个位
d2=n/10%10;//⼗位
d3=n/100%10;//百位
d4=n/1000%10;//千位
6. 算术表达式:运算符将运算量(常量、变量、函数调⽤等)连接⽽成符合C语⾔语法的式⼦。(就是组合运算)
7. 表达式中的乘号不能省略。⽽且必须是*
例如,a b c
在表达式中⽤括号改变运算符的运算次序时,使⽤圆括号。
括号⾥⾯的优先计算
例如:(-b+sqrt(b b-4a c))(2a)
8. 在表达式中,可以调⽤C语⾔的库函数。
最常⽤的数学库函数包括:绝对值函数fabs(x)、乘⽅函数pow(x,y)、平⽅根函数sqrt(x)等。
在程序中调⽤库函数时,在程序的开头⽤include命令包含相应的头⽂件。
#include<math.h>
四、优先级
即⼀个表达式中不同运算符之间进⾏运算的先后次序。
例如:a-b c(先b c,因为是乘法)
⼀般来说
1. 取正取负运算符最⾼就是+a、-a这种
2. *、/、%这种次之
3. +、-更低了
4. ()随意改
我之前有⼀篇博客总结过运算符优先级(我敲了⼀下午才敲出来的表格、累的⼀批),有需要的可以去看⼀下
5. 当⼀个运算量两侧的运算符优先级相同时,若先按左侧运算,则称为左结合性;反之,称为右结合性。*与/均为左结合性。
6. 取正取负运算符具有右结合性
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论