Bootstrap

C语言基础第三课——基本的数据与运算——整型(int)实型(float、double)与字符型(char)数据、基本的数据与运算——算术运算符和算术表达式 、/运算、%运算、优先级

之前那两篇是emmmm5.19写的,感觉有点没有那么的规范条理,而且我也记不太住以前写的啥了,所以emmmm,以后的文章就尽量写的规范一些吧。

一、基本的数据与运算——整型、实型与字符型数据

1.整型

在这里插入图片描述

  1. C语言中可以有十进制整数:如129、-129等。
    八进制整数:以0打头。如0123、-0123等
    十六进制整数:以0x打头。如0x12a、-0X12a等
    就是没有二进制
    管他几进制呢只要输出的时候在printf语句里面加以限制,咱喜欢让他几进制形式就给它转换成几进制形式。(最常用的%d就是十进制整数)

2.实型

  1. 分类:
    (1)按照有无符号位,分为有符号整型和无符号整型两大类。有符号的话,最高位表示符号位,比如10000001就是-1的意思,最高位是符号位,剩下的为数是数值位。这样数就有±了,如果没有符号位,就都是正数了,这样正数的范围也就扩大了。0正1负
    (2)按照整型数据在内存中的长度分为基本整型、短整型、长整型三种。
    组合一下
    在这里插入图片描述在C语言中,int型数据在内存中的存储形式是(补码)
  2. 实数——浮点数——实型变量/常量
    十进制小数形式:例如: 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,不能够省略的,这个是正确的啊)
  3. 在这里插入图片描述
    到底选择啥样的,看题目要求跟自己决定了啊,做题的话,他给的范围是很宽的,一般来说用double也不会出事。
  4. 实数在内存中一律以二进制指数形式存储,取值范围比整数大。
  5. 实型数据在内存中存储的二进制位数是有限度的,例如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;   //千位
  1. 算术表达式:运算符将运算量(常量、变量、函数调用等)连接而成符合C语言语法的式子。(就是组合运算)
  2. 表达式中的乘号不能省略。而且必须是*
    例如,abc
    在表达式中用括号改变运算符的运算次序时,使用圆括号。
    括号里面的优先计算
    例如:(-b+sqrt(bb-4ac))(2a)
  3. 在表达式中,可以调用C语言的库函数。
    最常用的数学库函数包括:绝对值函数fabs(x)、乘方函数pow(x,y)、平方根函数sqrt(x)等。
    在程序中调用库函数时,在程序的开头用include命令包含相应的头文件。

#include<math.h>

四、优先级

即一个表达式中不同运算符之间进行运算的先后次序。
例如:a-bc(先bc,因为是乘法)
一般来说

  1. 取正取负运算符最高就是+a、-a这种

  2. *、/、%这种次之

  3. +、-更低了

  4. ()随意改
    我之前有一篇博客总结过运算符优先级(我敲了一下午才敲出来的表格、累的一批),有需要的可以去看一下

  5. 当一个运算量两侧的运算符优先级相同时,若先按左侧运算,则称为左结合性;反之,称为右结合性。*与/均为左结合性。

  6. 取正取负运算符具有右结合性

;