当前位置:网站首页>c语言学习总结(上)(更新中)

c语言学习总结(上)(更新中)

2022-07-06 09:24:00 |光|

 

 

用到的软件

这是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>中的函数
  • 空语句
    单一个;就是空语句,就是什么也没有,就是这么任性
  • 复合语句
    就是指由括号阔在一起的语句

 

原网站

版权声明
本文为[|光|]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_62757251/article/details/124971621