硅基计划 学习总结 贰

 声明

本人基础知识薄弱,仅为总结所学知识

若有错误欢迎指正,请勿恶意攻击


一、变量

1.可以是类型创造变量,变化值变量,不变值变量,变化值变量。

2.命名:不能以数字开头,以字母数字下换线组成,同时不能为关键字,不超过63个字符。

3.类别:全局变量→共享/工程可用,“{}”之外;局部变量→私有,优先级高,“{}”之内的。

4.其存放位置:变量创建的本质是在内存中申请一块空间,那么他们存在什么位置呢?

#首先我们来知晓内存划分区域→栈区、堆区、静态区,则各个变量存储位置↓

栈区→局部变量、函数参数,堆区→动态内存管理,静态区→全局变量。

5.聪明的你一定发现了,为什么我们在创建变量要初始化呢?答案就是因为这样可以更好的控制,如果不进行初始化,那么它的值就为随机值,全局变量则为0。

二、算术操作符(运算符)——双目

1.  +、-、*  顾名思义,加减乘,习惯写↓

int r = num 1 + num 2;

 2.  /  表示出发,而且是取商。倘若两端都为整数,那么进行整数除法,结果取整:6/4=1;倘若有一段是小数,那么执行小数除法,结果保留小数:6.0/4=1.5。

3.  %  求余/取模,得到整数相除后的余数,例如6%4=2。对于负数求模规则,结果的正负由第一个运算数正负决定,例如:11%-5=1,-11%-5=-1。

三、算术操作符(运算符)——赋值

#连续赋值情况下,为从右往左依次赋值。

int main()//正常赋值
{
 int n = 0;
 n = 10;
}

int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//这么做不妥,还是建议拆开来写比较好
//输出结果为a=3,b=6,c=6;

 #当然你也可以复合赋值,采用a自增的方法

int a = 10
a = a + 3;//这里也可以用a += 3

 四、算术操作符(运算符)——单目

1.++,-- 类:如果你想让a自己减1,除了用a=a-1,也可以用a--或者--a,他们的区别就是:

如果“--”在a的后面,则说明a是先使用之后再自身减1,例如

int a = 10;
int b = a--;
//那么程序的结果就是a=9,b=10

如果“--”在a的前面,则说明a是先自身减1再使用,例如

int a = 10
int b = --a;
//程序的结果就是a=9,n=9

 2.“+”,“-” 类:这里指的是正负,“+”基本上可以省略,对于结果无影响,但是“-”不可以,例如

a = 10;
- a = -10//打印结果

 


 五、强制类型转换

有的时候,你不想被代码束缚,你就想那样搞,比如:int a =(int)3.14,这样就强制转化为整型了,如果加上printf打印,打印结果就为3,而且不会四舍五入。

六、printf

1.你可以定制输出文本的格式,也可以在文本内部加上换行符。

2.对于文本的某些地方捏可以用占位符代替,可以是一个,也可以是多个:

printf("I am %d years old",2)//后面的2对应前面%d的占位符,可以进行修改

若果你的占位符没有一一对应,那么编译器会给随机值。

3.若你想限定整体数字打印的宽度,可以在打印格式里下手,这里限定宽度指的是最小宽度,比如

printf("%5d\n",123);//这里的5d就是限定打印五个宽度

如果小数位数不够呢? 诶!就用空格补齐,比如这里,123,那缺两位是不是要空格补齐呀,如:_ _ _ 123,而且这个打印默认右对齐,如果你想左对齐你在5d前加上负号就好。

4.如果你想正数打印的时候总是想打印“+”号(呃,一般人也不会这么想吧),你就在5d前加上“+”就好了,嗯就这样。

5.如果你想限定你的打印的小数位数,你可以在打印格式里下手,而且默认会四舍五入哦!!

printf("%.2f",123.456789)//打印的结果就是123.46

当然你也可以限定字符串,输出部分的字符串的内容哦! 

诶!聪明的你一定这么想,我把限定整数宽度和小数宽度结合起来不也可以吗,你这么想就对了

printf("%10.2f",123.4567)//打印结果就是_ _ 123.46
//注意这里的10指的是整体的字符宽度,小数点也算哦!

 七、scanf

#它的原理就是把你输入的值预先存入缓存中,只有在你输入值后回车才会存储数字,格式:scanf("%d←这里制定输入类型,&a←这里一定要取地址来读取数字)

1.基本用法:一次输入多个数据,数据必须一一对应,例如这样:

#拓展:科学计数法C中表达:-4.0e3=-4.0*10³

scanf("%d %d %f %f",&a,&b,&c,&d)

而且它还有个特点,在处理占位符的时候,会默认过空格、制表符、换行符、回车、其实开头的空白字符等等。除了%c以外,无论是否为空白字符都会返回首字符,若想强制跳过空白字符,你可以在“↓%c”↓箭头处加入空格。

还有,若果你想输入一个数组,你是不需要取地址的,因为数组名就是一个地址。

#拓展:你认为%s就是完全等同于字符串吗,不是的,scanf读取时后面读取到空格会跳过的。

2.我们以“-13.45e12# ”为例,scanf在读取的时候,它会直到解读不能读取的数为止,比如你规定int类型,那它只会读取到-13,后面不会读;再比如你规定float类型,它只会读取.45e12,后面的#不会读,包括其后面的。

3.它的返回值表示的是成功读取变量的个数,若数据读取遇到错误或者是文件末尾则EOF(值为-1),则终止读取,你也可以人工的读取失败,按住Ctrl+z三次。

4.对于其占位符,与printf类似,但是在scanf中double类型只能用“%lf”匹配,而在printf中“%f”“%lf”都可以呢。

5.注意,scanf在读取数组的时候不会检测字符串是否超过字符长度,会越界访问,你可以在%n[m]指定读取的数字和最多读取的字符数,m中可以写数字范围,n中可以写整数。但即使这样还是会存在一些问题,比如字符前存在空格,会导致scanf默认为终止读取字符,怎么规避这个呢?诶!我们可以用“%[^\n]s”,这里的意思是读取一个字符串直到遇到换行符才停止,当然这里的\n你也可以改成其他的。

6.赋值忽略符:如果你想读取一段日期,你希望你输入2025-4-12输出为某某年\n某某月\n某某日,输入2025/4/12也是这样,这样我们可以来用特殊的格式来实现:

printf("%d%*c%d%*c%d",&year,&month,&day);

其中*表示读取数据的时候忽略这个内容,而且%*c也不会存起来,解析后直接扔了。当然,你也没必要一定写成%*c,任何类型都可以哦!


END

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值