当前位置:网站首页>c语言学习总结(上)(更新中)
c语言学习总结(上)(更新中)
2022-07-06 09:24:00 【|光|】
c语言总结
用到的软件
这是2022年写的文章,所以建议大家用的是 vs2022 ,软件是免费使用的
同时支持并兼容 win11系统, 是编译c语言最专业,最完美的软件,个人认为
没有之一,唯一的缺点是,软件本身有点大,需要一定的储存空间
开始写程序的准备
我们点击创建新项目,点击空项目然后选择你想要存放的这个文件的路径,
以及它的名字,下一步即可创建一个项目,之后右键右边的源文件,选择添加新建项,选择c++文件项即可
快速添加模板
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns=" http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet ">
<CodeSnippet Format="1.0.0">
<Header>
<Title>mainc</Title>
<Shortcut>mainc</Shortcut>
<Description>mainc 函数自动生成</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="cpp"><![CDATA[
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("pause");
return 0;
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
将上面的代码复制
在桌面上新建一个 .txt 文件将代码放进去,然后把文件扩展名改成.snippet格式。不会的可以私信我,因为这个太简单了。
然后点击vs里面的上面的工具,选择代码片段管理器,点击添加,在将刚才的文件放进去一直点击下一步就行了
这样,我们在刚刚的源文件里面输入mainc,按enter键就会自动输出模板
正文
基本数据类型
计算机高级语言中,数据表现类型有两种:常量和变量。
常量
常量指 1 2 3,a,b等,这里的a,b会被计算机变为其对应的数字,
具体参考ascll码表
具体常量指以下
一 整型常量:如1,2,3,还有字母;
十进制小数:如123.456 , 0.0 , 10.0等;
二 指数形式: 如12.34e3(计算机无法使用上标,所以用e或E来代表以十为底的指数,e前必须有数字,e后面必须为整数。);
三 字符常量
分为两种
- 普通字符常量
如’a’ ,'b’等,代表字符a , b; - 转义字符
|‘\n’|换行|
|‘\t’|相当于按了一下Tab|
|‘\a’|警告声音提示|
|‘\r’|回车|
|‘\f’|换页|
|‘\o’|八进制|
|‘\x’|十六进制|
|‘\0’|空字符|
等等
四 字符串常量
如 “123” “ABC”
五 符号常量
用#define指令指定的后用一个符号代表一个常量如:
#define cd 584846
就是让cd代替584846。
六 地址常量
内存中存放数据的地址在程序运行时不能被改变,称为地址常量。
变量
变量就是在程序运行时它的值可以被改变的量
变量必须先定义在使用
命名规则应该符合标识符命名规则
标识符命名规则:
只能由字母,数字,下划线组成,只能由字母和下划线开头
同一个作用域中,不能重名,不允许是关键字,如:
不能写成 int。
数据类型
在计算机中,数据是被分开对待的,主要与内存的准确性等等有关,准确度是有限的,如果数值后的小数点过大,往后的数字可能会被记录错误
基本类型
整形 int ,只能是整数 范围-32768到32767 占4字节
字符型 char 定义字符,也可以存放整数 占1字节,中文占2字节,具体参考ascll表
单精度小数float 存放小数 占4字节
双精度小数 存放小数 占8字节构造类型
数组类型
结构类型 struct
联合类型 union
枚举类型 enum数组类型
可以在类型前面加上这些来控制他们
绝对值 unsigned
正常 signed
存放更精准 long 占8字节
存放更不精准 short 占2字节
越精准越占内存
如
unsigned long long int i;
即定义了一个双长整型无符号整型
数据输入输出
- 输出 printf putchar puts fputs
- 输入 scabf getchar gets fgets
printf函数
printf("要输出的内容");
也可以输出变量
printf("变量名对应的转义字符",定义的变量名);
- %d,对应十进制int;
- %f, 对应float;
- %c,对应char;
- %s,对应字符串类型数组;
- %ld,对应long;
- %sd,对应short;
- %o,对应八进制int;
- %x,十六进制int;
- %lf,对应double;
- %e,科学计数法;
也可以加\n , \t等
输出时可以对输出的值控制精度,例如
printf("%.1f",i);
意思是i的值最多为小数点后1位,多出来的会被4舍5入
scanf
和printf类似
scanf("使用者必须输入的字符+变量对应的转义字符",&变量,&变量);
上面的函数用来将客户输入的内容付给对应的变量
getchar和putchar
i = getchar();
putchar(i);
上面用来获得 一个 字符给i,然后输出i的内容,getchar只能获得一个字符
gets,puts
代码第一行应该添加头文件
#include<stdlib.h>
gets 和 puts是对字符串进行操作的函数
例如一个数组a[10],
gets(a);
puts(a);
按enter来结束输入
但是如果你输入了99个字符,超出了数组承受范围,gets函数不会判断上限,剩余的不会添加进去因此有了fgets。
puts函数会自动添加换行符,因此有了fputs。
fgets与fputs
和gets 包含同样的头文件
fgets(数组名,储存大小,stdin);
fputs不会在末尾自动添加换行符
fputs(数组名,stdout);
技巧
scanf与getchar函数可以起到暂停的作用
因为使用者不输入的话,程序就不会向下执行
运算符与表达式
基本类型运算符
也就是加减乘除,计算机的除法是小学除法
a/b=c余d
也就是说除后得到的是整数
要得到小数
要这样
a%b
%表示除了整数外面的余数
自增自减运算
自增就是给自己加1,自减就是给自己减一,这里拿自增举例
a++和++a表示自增,a–和–a表示自减
他们的优先级会很高,
a++和++a运算后都表示a=a+1
区别在于a++是会先调用a的值在给a加上1
++a是先给a加1,在调用a的值
比如
c = a++;
c = ++a;
上面的结果是c的值为a
下面的结果为c的值为a+1
一般在写程序时不允许在这俩有差别的时候使用,因为写出来的话程序会很难看懂,有时还会混淆,原本是不讲这里的,但是现在的大学爱考。
c = i+++a;
你知道这个程序我想表达什么意思吗?
运算
计算机的数学运算和数学类似括号优先与乘除优先于加减,自增运算最高
这里要说的是int和float或double等等之间的运算
当然,就像你们想的一样,int与float或者double运算结果都会变为double类型
char类型运算会转化为对应的ascll码值
int与unsigned运算会先把int变为unsigned类型,再进行运算
当然,你也可以把他们的运算结果强制改为你想要的数据类型
只要在结果上加上
(数据类型)
就可以了,例如a+b后的c是double类型,我现在强制转化为int类型
c = (int)a + b;
要注意的是,转化后的值是临时值,数据本身还是原来的类型,下次用的时候还是原来的数据类型
更多运算符
除了算术运算符,还有
- 关系运算符(<,>,==,>=,<=,!=(不等于))以及真(1),假(0)
- 逻辑运算符(与(&&)或(||)非(!))
- 位运算符(左移<< ,右移>> ,按位与 & , 按位或 | ,按位异或^)
- 赋值运算符(+= ,-=,*=,/=,%=)
- 三目条件运算符 ((条件1)?(条件2):(条件3))
关系运算符与条件运算符运算结果为真或假,也就是1或者0
位运算符一般不会用到,它指的是将字符对应的二进制代码向左移右移之类的,只有在特定的情况才能用到,或者在一些数据结构中用到
赋值运算符
举个+=的例子
a+=b就相当与a = a + b
重点是三目运算符
他的意思是
条件一成立吗?,成立就执行条件2,不成立执行条件3
其他的运算符没有讲解的必要
这里要说的是运算符的优先级
广义上来讲
单目大于双目大于三目。
算数>关系>逻辑>条件>赋值>逗号
具体查看百度
https://cn.bing.com/search?q=c%E8%AF%AD%E8%A8%80%E8%BF%90%E7%AE%97%E7%AC%A6%E4%BC%98%E5%85%88%E7%BA%A7%E9%A1%BA%E5%BA%8F%E8%A1%A8
c语句
从语言是由多个源程序文件组成,一个源文件是由多个函数,与处理文件和全局变量声明组成
c的基本组成单位是函数,函数是由多个c语句组成
语句分类
赋值语句
在c中, = 表示赋值,把右边的值给左边,两个=也就是==才是等于号表达式语句
就是一个表达式加上一个分号,如
c = 2;
没啥用,老师们比较脑瘫,爱考这些
- 控制语句
有九个,以后会详细讲
1 .if()…else()…
2 . for( ; ; )…
3 . while()…
4 . do…while…
5 . break;
6 . continue;
7.switch
8 . return
9.goto - 函数调用语句
指的是调用头文件里面的函数
如
使用我们之前说的printf
就是调用
#include<stdio.h>中的函数 - 空语句
单一个;就是空语句,就是什么也没有,就是这么任性 - 复合语句
就是指由括号阔在一起的语句
边栏推荐
- 网络基础详解
- WEB漏洞-文件操作之文件包含漏洞
- 浙大版《C语言程序设计实验与习题指导(第3版)》题目集
- The United States has repeatedly revealed that the yield of interest rate hiked treasury bonds continued to rise
- Mathematical modeling idea of 2022 central China Cup
- Fire! One day transferred to go engineer, not fire handstand sing Conquest (in serial)
- A complete collection of papers on text recognition
- On the idea of vulnerability discovery
- sqqyw(淡然点图标系统)漏洞复现和74cms漏洞复现
- [issue 18] share a Netease go experience
猜你喜欢
Statistics 8th Edition Jia Junping Chapter 7 Summary of knowledge points and answers to exercises after class
Network technology related topics
Tencent map circle
《统计学》第八版贾俊平第十三章时间序列分析和预测知识点总结及课后习题答案
Wu Enda's latest interview! Data centric reasons
Record an edu, SQL injection practice
JDBC事务、批处理以及连接池(超详细)
《统计学》第八版贾俊平第十章方差分析知识点总结及课后习题答案
Binary search tree concept
《統計學》第八版賈俊平第七章知識點總結及課後習題答案
随机推荐
内网渗透之内网信息收集(二)
网络基础之路由详解
Internet Management (Information Collection)
C language file operation
记一次edu,SQL注入实战
Statistics, 8th Edition, Jia Junping, Chapter 11 summary of knowledge points of univariate linear regression and answers to exercises after class
《统计学》第八版贾俊平第六章统计量及抽样分布知识点总结及课后习题答案
JVM memory model concept
XSS (cross site scripting attack) for security interview
《统计学》第八版贾俊平第十四章指数知识点总结及课后习题答案
[err] 1055 - expression 1 of order by clause is not in group by clause MySQL
《统计学》第八版贾俊平第三章课后习题及答案总结
Overview of LNMP architecture and construction of related services
“人生若只如初见”——RISC-V
Web vulnerability - File Inclusion Vulnerability of file operation
Sword finger offer 23 - print binary tree from top to bottom
How to understand the difference between technical thinking and business thinking in Bi?
JDBC事务、批处理以及连接池(超详细)
Network layer - simple ARP disconnection
Hackmyvm target series (2) -warrior