C语言复习笔记

C语言复习笔记

仅记录复习过程中的混淆和记忆模糊的知识点。

1、常量-八进制整数
在C语言中,如果一个整数是以 0 开头的,那么这个数是以八进制来表示的,即八进制整数。0x为十六进制整数。

2、
一个整数,例如1500,为 int 类型(21亿),如果是 1500L,则表示长整型,1500U 为无符号整型(42亿)。

3、
实型常量均为 double 类型,以8个字节存放,有效位数16位,加F后缀为 float 类型,有效位数为7位。

4、
\ddd表示1至3位,八进制数所代表的字符,\xhh表示1至2位十六进制数所代表的字符。

5、
字符串常量最后有一个\0

6、

#define 符号名 常量值

7、
声明变量但是未初始化,该变量已占用空间,其中存放随机数。而声明+初始化则是既申请了地址空间,又初始化其中的值。

8、
int putchar(int ch)
把字符C输出到屏幕上
putchar(65),输出的是A,65被当作ASCII码

9、
printf 输出时,格式为 %[修饰符]格式字符

%d或者%i 输出的是十进制整数

%e或%E输出的是指数形式浮点小数

%%输出%

10、
在这里插入图片描述
这里的 m 是整个数的宽度,而不是小数点前的整数部分的宽度。
.n 对于字符串,是确定输出位数
在这里插入图片描述
在这里插入图片描述
这里h表示 short 类型。
在这里插入图片描述
%d:把输入解释成一个有符号十进制整数
%hhd:把整数读作signed char 或 unsigned char,一个h输出2个字节,2个h输出1个字节。所以char的时候可以用2个h,short时用1个h。
输出类型不一样。
%c在输入输出的时候,是按照字符操作的。
%hhd是按照整数操作。

11、
getchar()函数会首先检查输入缓冲区,如果输入缓冲区为空,则会阻塞,直至输入字符。
前面一次输入可能会遗漏换行符,可以使用getchar();取出垃圾。

12、
在这里插入图片描述
赋值抑制符:取走输入的值,但是不赋值给任何变量。
可以用复制抑制符进行垃圾回收:scanf("%d%*c", &a);此时末尾的换行符就被取走了。

m可以限制宽度,如果输入是1234的整数,m为2,那么此时只会取前两位,即12

13、
使用 math.h 并且在用 gcc 时,需要在结尾加上 -lm

14、
sqrt(),求平方根
fabs(),求绝对值
pow(),幂
在使用格式化输出时,不能使用%d,返回值类型为double

15、
以e为底的log函数double log(double x)
以10为底的log函数double log10(double x)

16、
随机数生成函数头文件为stdlib.h
随机数发生器函数rand,函数原型int rand(void),返回0至int最大值之间的随机整数。
初始化随机数发生器函数srand,函数原型void srand(unsigned a),以给定数初始化随机数发生器。

srand(time(NULL));
rand();
// 以当前时间初始化随机数发生器,再产生一个随机数

可以通过取余的操作,将随机数控制在一个范围内

17、头文件#include <unistd.h>
unsigned sleep(unsigned seconds)
void usleep(int micro_seconds)
void exit (int a)

18、
++ 和 – 不能用于常量、表达式和函数返回值。

19、
类型转换包括隐式转换和强制转化。(为什么需要类型转换?便于硬件的实现)
隐式转换又分为运算转换、赋值转换、输出转换、函数调用转换

运算转换规则:不同类型数据运算时先自动转换成同一类型。char和short转为int,float转为double

赋值转换:同类型,有符号和无符号之间赋值,直接把等号左边的内存拷贝到等号右边的变量的内存里。长的赋给短的(截断),短的赋值给长的(若有符号位,将符号位移至最高)

输出转换:printf 把 char、short 提升到 int 型,float 提升到 double 再传给 printf
在这里插入图片描述
输出结果为ffffff82,82的最高位为1,前面就全都补1,若为0,前面会都补0

强制类型转换:强制类型转换得到所需类型的中间变量,原变量类型不变。

20、
在这里插入图片描述
两个实数无法做到恒等于的判断。
可以通过以下方法判断:
在这里插入图片描述
21、
优先级为:非与或

22、
逻辑表达式的短路特性,逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。

23、
在这里插入图片描述
24、
在这里插入图片描述

热门文章

暂无图片
编程学习 ·

关于Error:java: Compilation failed: internal java compiler error的解决方案

文章目录事故现场分析解决方案最终结果 事故现场分析 使用Idea导入新项目或升级idea或新建项目时会出现以上异常信息,导致这个错误的原因主要是因为jdk版本问题,此处有两个原因,一个是编译版本不匹配,一个是当前项目jdk版本不支持 常规分析:看一下compile,原来真的是错在…
暂无图片
编程学习 ·

lex yacc flex bison

简介 lex与yacc是两个在Unix下的分别作词法分析和语法分析的工具, Linux对应flex与bison。 Yacc 与 Lex 快速入门 flex 和bison的安装和使用 Windows下安装lex(flex)与yacc(bison)
暂无图片
编程学习 ·

01 | 为什么需要消息队列?

1.应用场景见: https://blog.csdn.net/william_n/article/details/1040254082.学习/操作2.1 阅读文档01 | 为什么需要消息队列?李玥 2020-01-1400:0011:24讲述:李玥 大小:10.46M你好,我是李玥。今天我们来讲讲为什么需要消息队列,消息队列主要解决的是什么问题。消息队列…
暂无图片
编程学习 ·

Dota 四五号位(辅助)理解

两个辅助打团等于3打5?我怕你是没经历东血魔北迪法南幻刺西巨魔中火枪的年代。你看这阵容是不是5大哥,咋不扎实?要输出有输出,要gank有gank,一个个还灵活得一批。dota发展到如今这个程度,辅助真的是越老越吃香,比如国土比如毛毛鸭比如爱沙尼亚拳王等等。他们的年龄很难做…
暂无图片
编程学习 ·

记录一下开始搭建springboot+jsp项目遇到的一个问题

记录一下开始搭建springboot+jsp项目遇到的一个问题简述自己搭建项目的过程错误及解决总结加补充 最近刚开始学习搭建springboot项目,用到的ide工具是idea,前端用的是jsp 简述自己搭建项目的过程 直接上图在idea中创建一个springboot项目,选择好自己使用的jdk 刚创建好的项目…
暂无图片
编程学习 ·

Linux下Flume的安装

Linux下Flume的安装 一、前置条件 Flume 需要依赖 JDK 1.8+,JDK 参考:Linux下JDK的安装二 、安装步骤 2.1 下载并解压 下载所需版本的 Flume,这里我下载的是 Apache 版本的 Flume。下载地址为:http://www.apache.org/dyn/closer.lua/flume/1.9.0/apache-flume-1.9.0-bin.ta…
暂无图片
编程学习 ·

[C/C++]覆盖与隐藏

①类的名字查询逻辑:前后有继承关系的类,其作用域实际上是嵌套的,即虽然我们写成两个类,父类和子类,看上去好像是分离的,实际上,他们就是另一种我们常见的类的关系,就是嵌套类。当我们申请了一个子类的对象,调用其中的一个继承而来的公有函数的时候,编译器实际上是首…
暂无图片
编程学习 ·

LeetCode——remove n-th node from end of list

题目描述: 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, n= 2.↵↵ 删除了链表的倒数第n个节点之后,链表变为1->2->3->5. 备注: 题目保证n一定是合法的 请尝试只用一步操作完成该功能 解题思路: 删除…
暂无图片
编程学习 ·

排序算法之插入排序、希尔排序、归并排序(C#)

插入排序 两次for循环,外层从数组第二位i=1开始,内层for循环由i向前进行判断,大于则将该位置与遍历位置交换。此时注意,不能按i的位置获取元素,应将该元素暂存,因为交换时对应i位置元素值会变换。c#代码如下/// <summary>/// 插入排序/// </summary>/// <…
暂无图片
编程学习 ·

Git上传项目到GitHub

windows上传文件到github的方法 文章目录windows上传文件到github的方法一、创建github的账号:二、安装git:三、上传简单来说就是以下几个命令:Git常见错误与操作:error: src ref spec master does not match any以及failed to push some refs to 。。。解决办法,再来一遍…
暂无图片
编程学习 ·

软件测试(软件测试生命周期,描述一个bug,定义bug级别,bug生命周期,如何开始第一次测试,测试执行和bug管理,测试工作中的人际关系处理)

一、软件测试的生命周期 对比软件的生命周期和bug的生命周期 软件的生命周期:需求分析——计划——设计——编码——测试——运行维护 软件测试的生命周期:需求分析——测试计划——测试设计、测试开发——测试执行——测试评估 bug的生命周期: 软件测试&软件开发生…
暂无图片
编程学习 ·

git用法备份

git远程仓库创建本地仓库ssh加密创建远程仓库 创建本地仓库 在命令行输入以下内容: $ mkdir gitstore $ cd gitstore $ git init Initialized empty Git repository in C:/Users/15665/gitstore/.git/我们可以看到gitstore目录下多了一个.git目录,证明创建成功。接下来在gits…
暂无图片
编程学习 ·

JavaScript之组合式继承

继承的概念 面向对象的三大特征:封装,继承,多态 封装: 将复杂的操作包裹起来,进行隐藏,简单化,安全化 继承: 拿来主义,自己没有,把别人的拿过来,让其成为自己的 JavaScript中有两种继承模型: 1.原型式继承 2.组合式继承 组合式继承就是将其他对象中的成员添加到自己…
暂无图片
编程学习 ·

Echarts3 关系图-力导向布局图 使用参数

// 基于准备好的dom,初始化ECharts实例 var myChart = echarts.init(document.getElementById(main), macarons); // 指定图表的配置项和数据var option = {tooltip : {show : true, //默认显示showContent:true, //是否显示提示框浮层trigger:item,/…
暂无图片
编程学习 ·

node.js实现爬虫项目展示大作业

一、项目要求二、实现 1、用户可注册登录网站,非注册用户不可登录查看数据 登录页、注册页 <!DOCTYPE html> <html ng-app="login"> <head><meta charset="utf-8" /><title>Login</title><link rel="stylesh…
暂无图片
编程学习 ·

Codeup——608 | 问题 E: 【递归入门】出栈序列统计(DFS)

题目描述 栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。你已经知道栈的操作有两•种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列。请你编程求出对于给定的n…
暂无图片
编程学习 ·

P1060 开心的金明 题解

目录题目详情题面分析代码 题目详情 题面传送门 题面分析 从v[j 1 ​]w[j 1 ]+v[j 2 ]w[j 2 ]+…+v[j k ]w[j k ]v[j~1~​]w[j~1~]+v[j~2~]w[j~2~]+…+v[j~k~]w[j~k~]v[j 1 ​]w[j 1 ]+v[j 2 ]w[j 2 ]+…+v[j k ]w[j k ]中就可以立刻地看出: 他是个背包板子题 总体就是个背包d…