C语言学习笔记

一.常量

程序执行过程中值不发生改变的量叫做常量

1.1符号常量

用标识符表示一个常量。一般形式:#define 标识符 常量

习惯上符号常量的标识符用大写字母表示,变量标识符用小写字母

1.2整型常量

整型常量分为十进制,八进制,十六进制,每种常量都有固定的表示前缀

其中:

十进制常量没有前缀正常表示即可,十进制无符号整常数的表示范围为0-65535,有符号数为-32768-+32767

八进制整数必须以0开头,八进制数通常是无符号数。表示范围是0-0177777

十六进制整常数的前缀是0x或者0X

如果使用的数超出使用范围就需要用长整型进行表示。

二.变量

其值可以改变的量称为变量,变量应该有自己的名字,在内存中占据一定的存储空间。变量定义必须放在变量使用之前,一般放在函数体的开头部分

2.1整型变量

常识补充:

一个字节是8比特

数值是以补码表示的,正数的补码和原码相同,负数的补码是在原码的基础上取反再加一

整型变量的分类

1.基本型(int)

2.短整型(short int)

3.长整型(long int)

4.无符号整型(unsigned int)

各种类型所占字节数多少可以自己写代码编译看一下

整型变量定义

定义变量的一般形式为:

类型说明符 变量名标识符,变量名标识符.....;

在书写变量定义时应注意:

允许在一个类型说明符后,定义多个相同类型的变量。各变量名之间用","间隔。类型说明符与变量名标识符之间至少用一个空格间隔

最后一个变量名之后必须以";"结尾

变量定义必须放在变量使用之前,一般放在函数体的开头部分。

整型数据的溢出

那为啥会出现这种情况呢,之前的例子里面我们也看到了short占2个字节也就是short一共占16个bit位,那我们就可以算出有符号整型和无符号整型的表示范围

有符号整型表示范围为-32768-+32767

无符号数表示范围0-65535

而我们用的是有符号数所以最后出现了溢出现象。

实型数据

实型也称浮点型,实型常量也称实物或者浮点数,c语言中实数只采用十进制

有两种表示方式:

1.十进制小数形式:

由数码0-9和小数点组成

2.指数形式:

有十进制数加阶码标志"E"或者"e"以及阶码组成

阶码只能为整数可以带符号

eg:

2.1E5=2.1*10^5

标准c允许浮点数使用后缀。后缀为"f"或是"F"即表示该数为浮点数如"356f"和"356."是等价的

实型数据在内存中的存放形式

实型数据一般占四个字节存储空间,按指数形式存储。3.14159在内存中的存储形式如下:

小数部分占的位越多,数的有效数字越多,精度越高

指数部分占的位越多,则能表示的数值范围越大。

为啥这里指数部分写的是1呢

因为我们小数部分存储的是".314159"也就是"0.314159"但是我们要表示的数是"3.14159"所以要乘10即10^1

实型变量的分类

实型变量分为:单精度(float)。双精度(double),和长双精度(long double)

每个类型所占字节还是自己打代码看一下

各类数值型运算之间的混合运算

变量的数据类型是可以相互转换的,转换的方式有两种一种是自动转换,一种是强制转换

自动转换:发生在不同数据的两混合运算时,由编译系统自动完成,自动转换遵循一下规则

1.若参与运算量的类型不同则先转换成同一类型再进行运算

2.转换向数据长度增加的方向运行,以保证精度不降低。如int和long进行运算时,先把int转换成long再进行运算

3.所有浮点运算都是以双精度进行的,即使仅含单精度运算的表达式,也要先转换成double型再进行运算

4.char型和short型进行运算时,必须先转换成int型。

5.在赋值运算中,赋值号两边的类型不同时,赋值号右边量的类型转换为左边量的类型。如果右边量的数据长度大于左边量的数据长度就会损失部分数据,丢失的数据按照四舍五入向前舍入。

强制类型转换

一般形式为:(类型说明符)(表达1.式)

其功能是把表达式的运算结果强制转换为类型说明符的类型

eg:

(int)(x+y) 将x+y的运算结果转换成int型数据

(int)x+y 将x转换成int型在与y相加

使用强制转换时的注意要点:

1.类型说明符和表达式必须加括号,如果表达式是单个变量的话表达式可以不加括号

2.无论是强制转换还是自动转换,都只是为了本次的运算需要而对变量长度进行临时替换,不改变该变量原始定义类型。

算术运算符和算术表达式

基本运算符

加"+",减"-",乘"*",除"/",取余"%"

需要注意:除运算参与运算量均为整型时结果也为整型,舍去小数。如果运算中有一个变量是实型结果转换为双精度实型。

运算符的优先级:c语言中运算符的优先级共分为15级。1级最高,15级最低,优先级高的先运算。

而在一个运算量两侧的运算符优先级相同时,则按照运算符的结合性所规定的结合方向处理

运算符的结合性

结合性分为两种:左结合性和右结核性

左结合性:即运算时从左向又得运算比如算术运算符的结合

右结合性:结合方向为自右向左比如赋值运算符

自增,自减运算符

自增:记为"++"即让变量的值自增1

自减:记为"--"即让变量的值自减1

自增,自减有一下几种形式:

++i i先自增1在参与其他运算

--i i先自减1在参与其他运算

i++ i先参与运算后,i的值再加1

i-- i先参与运算后,i的值再减1

赋值运算符

一般形式为:变量=表达式

类型转换

如果赋值运算符两边的类型不相同,系统将自动进行类型转换即右边的类型转换为左边的类型。

具体规定如下:

1.实型赋予整型:舍去小数部分

2.整型赋予实型,数值不变但以浮点形式存放

3.字符型赋予整型,由于字符型为一个字节整型为4个字节,故将字符型ASCII码值放到整型变量的低八位中,高八位为0.整型赋予字符型,只把低八位赋予字符变量。

复合的赋值运算符

种类:+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=

eg:

a+=5即a=a+5

逗号运算符和逗号表达式

其功能是把两个表达式连接起来组成一个表达式

其一般形式为:

表达式1,表达式2

其求值过程是分别求两个表达式的值,表达式2的值作为整个逗号表达式的值

程序

程序可以分为三种基本结构即:顺序结构,选择结构,循环结构

c语句可以分为以下五类:

1.表达式语句

表达式+分号组成

2.函数调用语句

由函数名+实际参数+分号

一般形式为:函数名(实际参数表)

3.控制语句

控制语句用于控制程序的流程。一般分为以下三类:

(1)条件判断语句:if语句,switch语句

(2)循环执行语句:do while语句,while语句,for语句

(3)转向语句:break语句,go to语句,continue语句,return语句

4.复合语句

把多个语句用{}括起来组成的一个语句,复合语句的各条语句都必须以;结尾在}外不能再加;

5.空语句

只有;组成的语句

字符数据的输入输出

putchar函数

putchar函数是字符输出函数,核心功能是在显示器上输出单个字符其一般形式为putchar(字符变量)

\t 是转义字符,作用是输出一个 Tab 键的空格(通常 4/8 个空格),用来对齐内容

getchar函数

功能是从键盘上输入一个字符

一般形式为:getchar();

格式输入与输出

printf函数

其功能是按照用户指定的格式将指定的数据显示到屏幕上

调用一般形式为:printf("格式控制字符串",输出表列)

其中

%d表示按照十进制整型输出

%ld表示按照十进制长整型输出

%c表示按照字符型输出

使用printf函数时还需要注意一个问题,就是输出列表的求值顺序。不同编译系统不一定相同,可以从左向右也可以从右向左

scanf函数

scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量当中去

一般形式为:scanf("格式控制字符串",地址列表);

格式字符串

格式字符串的一般形式为:%[*][输入数据宽度][长度]类型

其中有方括号的项为任选项,各项的意义如下:

练习题

最后给大家一道编程题自己试着打一下,答案放在下篇笔记

相关推荐
Alphapeople3 小时前
Isaac Sim学习
学习
蒸蒸yyyyzwd3 小时前
高并发40问学习笔记
笔记·学习
天若有情6735 小时前
循环条件隐藏陷阱:我发现了「同循环双条件竞态问题」
c++·学习·算法·编程范式·while循环··竞态
Amazing_Cacao6 小时前
褪去故事滤镜:重建精品可可的“结构语言”
笔记·学习
网络工程小王6 小时前
【大数据技术详解】——Sqoop技术(学习笔记)
大数据·学习·sqoop
暖阳之下6 小时前
学习周报三十六
学习
zlpzlpzyd6 小时前
groovy学习
java·jvm·学习
泯仲6 小时前
从零起步学习MySQL 第十二章:MySQL分页性能如何优化?
数据库·学习·mysql
我要成为嵌入式大佬7 小时前
嵌入式学习找工作第十七天--第二个项目(命令行日记本)
学习