2019/8/19 C语言回顾(1)

一、冯诺依曼

  将计算机分为5个部分

  (1)输入设备:键盘、鼠标

  (2)输出设备:显示屏

  (3)存储器:

    内存(运行内存)RAM:内存条

    外存 ROM: 硬盘、光盘、u盘、sd卡

    寄存器:在cpu内部 、提高程序的运行效率

   (4)运算器

   (5)控制器

  注:运算器和控制器集成为cpu

二、进制转换

  1、十进制  逢十进一    78 = 8*10^0 + 7*10*^1

  二进制  逢2进一      1001110

  八进制  逢8进1

  十六进制  0,1,。。。。a,b,c,d,e,f

  3位二进制数可以视为一位8进制数

  4位二进制数可以视为一位十六进制数

  2、 ascii码表

  0 === ‘\0‘

  10 === ‘\n‘

  32 === ‘  ‘

  48 === ‘0‘

  65 === ‘A‘

  97 === ‘a‘

  3、词法符号   关键字

  c语言中一共有32个关键字:

auto 声明自动变量
short 声明短整型变量或函数
int 声明整型变量或函数
long 声明长整型变量或函数
float 声明浮点型变量或函数
double 声明双精度变量或函数
char 声明字符型变量或函数
struct 声明结构体变量或函数
union 声明共用数据类型
enum 声明枚举类型
typedef 用以给数据类型取别名
const 声明只读变量
unsigned 声明无符号类型变量或函数
signed 声明有符号类型变量或函数
extern 声明变量是在其他文件正声明
register 声明寄存器变量
static 声明静态变量
volatile 说明变量在程序执行中可被隐含地改变
void 声明函数无返回值或无参数,声明无类型指针
if 条件语句
else 条件语句否定分支(与 if 连用)
switch 用于开关语句
case 开关语句分支
for 一种循环语句
do 循环语句的循环体
while 循环语句的循环条件
goto 无条件跳转语句
continue 结束当前循环,开始下一轮循环
break 跳出当前循环
default 开关语句中的“其他”分支
sizeof 计算数据类型长度
return 子程序返回语句(可以带参数,也可不带参数)循环条

  4、标识符

    1)、以字母、数字和下划线组成

    2)、不能以数字开头

    3)、不能和关键字重名

  5、分隔符

    换行 空格 tab  注释

  注释:

  1、// :注释掉注释符之后那一行内容

  2、/* ... */:注释两个符号中间的所有内容

  3、#if 0    #endif

  6、运算符

  7、标点符号

  三、计算机基础

  数据类型 (规定了数据的所占空间大小以及数据的取值范围)

  l)基本数据类型

  1、逻辑类型     bool类型    只有两个值  true false ,如果使用到true 和 flase,需要加上头文件 <stdbool.h> ,在c语言中0代表假,非0值代表真

  2、基本类型

  【1】整型

  (1)、字符型(本质就是整型)

  ‘a‘    97        0~127

  char 在内存空间中占1个字节大小 0~255 -128~127

  数据越界:数据越界并不会报错,只是显示的结果并不是我们想要的

  无符号 unsigned

  有符号 signed (编译器默认为有符号类型)

  如果是有符号数据,则最高位以0表示正数、1表示负数

  原码 正数的原码、反码和补码相同

  反码 负数的反码保存符号位不变,其余位取反

  补码 负数的补码在反码的基础上加1

  (2)整型

  short 在内存空间中占2个字节大小

  int 在16位机中占2个字节,在32位机中占4个字节

  long 在32位机中占4个字节,在64位机中占8个字节

  (3)、浮点型

  编译器一般默认保留小数点后6位

  float 单精度 一般情况下精确到小数点后6位 占4字节 有效位为7位

  double 双精度 一般精确到小数点后16位      占8字节 有效位为17位

  double a;

  scanf("%f",&a); //应用scanf("%lf",&a);

  执行上面语句时,发现double类型的输入不能使用%f进行输入,得用%lf才能正常得到a的值。

  而在输出double类型时却可以用%f,这是因为printf("%f",a);在执行时C自动将float型的参数转换成double型。

  故double型的输入输出形式如下:

  double a;

  scanf("%lf",&a);

  printf("%f",a);

  

  四、常量         在程序执行过程中不会被改变的量

  1、整型常量      10

  2、浮点型常量   1.23

  3、字符常量       ‘a‘ ‘0‘

  4、字符串常量    “hello”   以‘\0’结尾

  5、标识常量

  宏定义

  一般情况下宏定义放在头文件下方

  #define  标志符   被替换的内容

  被替换的内容:可以是一个常量,也可以是一个表达式,甚至可以是一句语句

  宏定义是完整的字符串替换

  五、变量

  局部变量 局部变量的作用域在定义的函数内部

  全局变量 全局变量的作用域是整个文件

  定义变量的一般形式

  存储类型 数据类型 变量名;

  1、auto 只能够修饰局部变量,如果不写存储类型的话编译器默认为auto类型

  2、register 寄存器类型  

  所修饰的数据会存储在寄存器中,提高程序运行效率,但是如果寄存器空间占满,register修饰的数据会自动转化为auto类型

  3、extern 外部声明

  声明和定义的区别

  注意:同一个工程的所有文件需要同时编译,但注意一个工程只能够有一个main函数

  初始化:在定义的同时赋值

  int a = 10;

  int a;

  a = 10; //单纯的赋值操作

  作用域:

  4、static 静态的

  1、修饰全局变量

  限制了全局变量的作用域,则其他文件无法通过外部声明的方式引用

  2、修饰局部变量

 存储空间从栈区改变为数据区。

 延长了局部变量的生命周期(作用域不变)

 只能够初始化一次并且值会保留

  3、修饰函数

  仅本文件可用,其他文件无法引用。

  六、数据类型转换

  隐式转换 : 编译器优化

  1、赋值运算

  可能会导致数据越界

  int a = 129;

  char b = a;

  当高进度数据转化为低精度数据时,可能会导致精度丢失

  float a = 1.23;

  int b = a;

  2、算术运算

  当高精度数据和低精度数据进行运算时,结果会转化为精度较高的数据类型

  3、当有符号数据和无符号数据进行运算,结果会转化为无符号类型

  强制转换 :人为操作

  int a = 129;

  char b = (char)a;

  注意:a本身还是原来的类型

  七、运算符

  1、赋值运算符   =

  2、算术运算符 (双目运算符)

  +  -  *  /

  % (只能够使用在整型运算当中)

  ++ (单目运算符)

  a++;

  ++a;

  a = a + 1;

  在赋值运算,算术运算和printf中会有区别

  ++在前 先运算,后取值

  ++在后 先取值,后运算

  注意:在同一个表达式中,不可以对同一个变量进行多次赋值操作;

  int b = a++ + ++a + a++ + ++a;

  --

  a--

  --a

  a = a - 1

  3、关系运算符

  4、逻辑运算符

  5、位运算符

  6、特殊运算符

原文地址:https://www.cnblogs.com/epll/p/11380133.html

时间: 2024-10-10 07:56:10

2019/8/19 C语言回顾(1)的相关文章

2019/8/20 C语言回顾(2)

一.逻辑运算符 &&  逻辑与 表达式1 && 表达式2 1          1          1 1          0          0 0          1          0 0          0          0 口诀:与0为0,与1不变 特点:当表达式1结果为真的时候,会继续判断表达式2的结果,但如果表达式1的结果为假,则不会去判断表达式2是否成立 || 逻辑或 表达式1 || 表达式2 1          1        1 1 

2019/8/24 C语言回顾(5)

一.二维数组 一般形式 数据类型 数组名[行标][列标]: | 数组内元素的数据类型 int a[2][3]; 数据类型 int 完全初始化 int a[2][3] = {1,2,3,4,5,6}; int a[2][3] = {{1,2,3},{4,5,6}}; 注意:行标可以省略,列标必须保留 不完全初始化 int a[2][3] = {1,2,3,4}; int a[2][3] = {{1,2},{3,4}}; 不初始化 数组置零 a[2][3] ={0}; 引用二维数组元素 数组名[行标

C语言回顾一“Hello world”

每个学程序的人都是冲"Hello world"开始进入神奇编程的世界! 简单的代码: #include <stdio.h> int main() { printf("Hello World\n"); } #include<stdio.h>将从编译器的安装文件夹下的include文件夹下去搜索stdio.h头文件.stdio.h是标准的输入输出流文件. int main()是整个程序的入口,就好比进入一个房间首先得找到进入房间的入口,也就是房门

2019.3.18考试&amp;2019.3.19考试

2019.3.18 C O D E T1 树上直接贪心,环上for一遍贪心 T2 正反都做一遍DP T3 观察到顺序不影响答案,分块打标记 2019.3.19 肥肠爆芡,因为沙茶博主昨天在学校的煞笔食堂吃坏了肚子,所以这场考试咕咕了 我佛了 一定补这两场.jpg 原文地址:https://www.cnblogs.com/ydnhaha/p/10558495.html

mybatis使用要点(2019.5.19)

接口入参 只有一个参数,叫啥都没问题 有两个参数以上,需使用@Param,否则名字依次为0.1.2和param1.param2.param3 一般用#,防sql注入:偶尔用$,比如需要动态表名等 接口返回结果 有resultMap和resultType resultMap需要定义一个resultMap元素,然后在元素里面把下划线转为驼峰 resultType一般对应一个实体类,又或者HashMap(不是map),要写类的全路径,这样就需要在select里把下划线转驼峰 但下划线转驼峰最好用map

开荒日-2019/06/19

2019/06/19,毕业两年之际,个人原因来到了台州,这个对程序员来说不是很友好的地方,技术提升遇到了阻碍,想要从项目中学习东西但是收获甚微,还好现在的工作时间比较宽裕,让我有不少可以自由支配的时间,也算是到了工作的舒适区吧,但是此刻心里还是挺着急的,压力来源于对技术能力的渴望,却少有可以锻炼的机会.所以决定自己动手丰衣足食,打算开发一个自己的小产品,考虑了几天,打算搭建一个基础版本的OA平台(我现在的工作就是对一套OA系统进行二次开发),把开发过程中遇到的问题和新学的技术记录在博文中,以便以

2019.10.19初赛滚粗后的日子

写在故事的前面的话 人生中第一次考CSP-S,然后考得有点自闭,我想我写这篇blog并不是想要说AFO之类的话,相反,我觉得自己应该继续坚持下去的丫子.自己以前欠了很多知识,以前是自己初中时期的不认真,现在我就把自己当成是高一才学OI的萌新,忘记过去对自己的一些期望,重新开始自己的OI生涯. 2019.10.19 今天在自闭完了之后还是逐渐接受了初赛没有多大几率过的事实,开始复习起之前学的东西.首先,今天开始复习树形DP(入门).list如下: Park visit (已过) 没有上司的舞会 (

19.go语言基础学习(上)——2019年12月16日

2019年12月16日16:57:04 5.接口 2019年11月01日15:56:09 5.1 duck typing 1. 2. 接口 3.介绍 Go 语言的接口设计是非侵入式的,接口编写者无须知道接口被哪些类型实现. 而接口实现者只需知道实现的是什么样子的接口,但无须指明实现哪一个接口. 编译器知道最终编译时使用哪个类型实现哪个接口,或者接口应该由谁来实现. 每个接口类型由数个方法组成.接口的形式代码如下: type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列表

「C语言回顾之旅」第一篇:指针详解

说明: 最近学校课程开设了<数据结构>的课程,无疑,数据结构的重要性在IT生涯的进阶路上是不可置疑的,也常说,数据结构是专业性与非专业性的分界线.所以无论以后走的是什么方向,毕竟是读计算机专业的,所以必须学好数据结构的.虽然目前我给自己定的方向是走运维/系统架构方向的,可有句话说得好,不懂开发的运维注定会被淘汰,在IT这一行,要让自己变得更加强大.最近也一直在学Python,感觉还不错,学数据结构相信对自己也肯定有好处的,对一些较为底层的知识有些了解和理解,这样才能走得更远! 无疑C语言就很重