今天刚刚翻看了本身当初学习C语言时候的笔记,发现感触挺深的,正好这个时候正是本身的复习阶段,就拿过来复习一下吧
程序:为解决特定的问题而用计算机语言编写的有序指令序列的集合html
#include<stdio.h> int main(void){ printf("Hello World"); return 0; }
这个程序须要回答如下几个问题:html5
程序是如何执行的 ?程序员
源文件(.c)(>=1个)头文件(.h)(>=0个)
。源文件和头文件在实际目录中是在同一层目录之下的,而咱们在编译器中看到的则是一个虚拟目录,自动分红的目录。二进制文件目标文件(.obj)
,进行语法错误
的检查。编译过程当中,是以源文件
为基本单位的。可执行性的文件(.exe)
。(debug)
也是一个环节,但对于个别小程序来说,调试不是必须的过程。对上面程序是如何理解的 ?算法
标识符#、预处理指令include和头文件
组成。#include是预处理指令
,它的做用是将指定的头文件内容放到预处理指令的所在位置。printf库函数
包含在stdio.h
里(stdio表示standard input/output)
。<>表示系统文件
,即表示预处理的文件从系统规定的位置寻找头文件""表示当前目录下的头文件
,即表示预处理的文件先从当前目录下进行寻找,若经过,继续进行下面的编译,若没有再从系统中寻找头文件。main
函数是可执行程序的入口函数。一个C程序
有且只有一个main函数
。问题的求解须要用到算法,算法主要有如下几个特征:编程
变量的定义:小程序
内存中一块连续的空间
起一个名字,经过这个名字来操做它,这个名字就是变量名
,也叫作标识符
。变量声明的基本语法:函数
/*数据类型 变量名1, 变量名2 …, 变量名n;*/ int a;// 定义了一个变量a,a的数据类型是int型
变量命名的规范:学习
数字,字母和下划线_
组成不能打头
关键字
区分
大小写变量的赋值:spa
变量能够先定义再赋值,也能够在定义的同时进行赋值;在定义变量的同时赋初值称为初始化
。
注意,在定义中不容许连续赋值,如a=b=c=5是不合法的
。翻译
常考试题:
( D
)是合法的用户自定义标识符。
A.case
(关键字) B.123f
(数字) C. #html5
(符号) D. _int
整型数据的分类和范围
short
2
个字节int
2/4
个字节(8位和16位系统是2字节,32位系统是4字节,64位系统仍是4字节)long
4/8
个字节(除了64位系统是8字节,其余都是4字节)long long int
或long long
8
个字节 (VC6.0不支持,是在C99中添加的)整型数据能够分为符号型和无符号型
,前缀带有unsigned
的都是无符号型。在同一个编译器和系统下,有符号
和无符号
表示的字节都是相同的
。
不一样的系统必须知足sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)
各种型长度:
// short int short int(2字节占16位) :-(2^15-1)~(2^15-1),即-32767~32767 unsigned short int(2字节占16位):0~(2^16-1),即0~65535 // int int(32/64位系统,4字节占32位):-(2^31-1)~(2^31-1),即-2147483647 ~2147483647 unsigned int(32/64位系统,4字节占32位):0~(2^32-1),即0 ~ 4294967295 // long int long int(非64位系统,4字节占32位):-(2^31-1)~(2^31-1),即-2147483647 ~2147483647 unsigned long int(非64位系统,4字节占32位):0~(2^32-1),即0 ~ 4294967295 long int(64位系统,8字节占64位):-(2^63-1)~(2^63-1),即 -9223372036854775807~9223372036854775807 unsigned long int(64位系统,8字节占64位):0~(2^64-1),即 0~18446744073709551615 // long long int long long int(8字节占64位):-(2^63-1)~(2^63-1),即 -9223372036854775807~9223372036854775807 unsigned long long int(8字节占64位):0~(2^64-1),即 0~18446744073709551615
无符号类型长度总比有符号类型长度多一位
,好比16位int是±2^15-1,16位unsigned int倒是2^16-1
,是由于有符号整型
须要一个位
去做为符号位,用于表示正负,因此少一位;而无符号整型不须要符号位,全部位所有用于表示整数。
整型数据在内存中存放的方式
补码
的形式存储的正数
:原码、补码、反码相同负数
: 原码:数值的二进制表示 反码:符号位不变,数值的二进制按位取反 补码:数值的反码加1整型数据的表示方法
合法的十进制数
:23七、-56八、6553五、1627不合法的十进制数
:023 (不能有前导0)、23D (非十进制数码)。0
开头,即以0
做为八进制数的前缀。数码取值为0~7
。八进制数一般是无符号数
。合法的八进制数
:015(十进制为13)、0101(十进制为65)、0177777(十进制为65535);不合法的八进制数
:256(无前缀0)、03A2(包含了非八进制数码)、-0127(出现了负号)。0X或0x
。其数码取值为0~9,A~F或a~f
。合法的十六进制数
:0X2A(十进制为42)、0XA0 (十进制为160)、0XFFFF (十进制为65535);不合法的十六进制数
:5A (无前缀0X)、0X3H (含有非十六进制数码)。字符型数据是用单引号
括起来的一个字符。例如:'a'、'b'、'='、'+'、'?'
都是合法字符型数据。
只能用单引号
括起来,不能用双引号或其它括号。只能是单个字符
,不能是字符串。不能参与数值运算
。如'5'
和5
是不一样的。'5'是字符型数据,不能参与运算。转义字符
转义字符是一种特殊的字符。转义字符以反斜线"\"
开头,后跟一个或几个字符。转义字符具备特定的含义,不一样于字符原有的意义,故称 “转义” 字符。
转义字符主要用来表示那些用通常字符不便于表示的控制代码:
转义字符 | 转义字符的意义 | ASCII代码 |
\n |
回车换行 | 10 |
\t |
横向跳到下一制表位置 | 9 |
\b |
退格 | 8 |
\r |
回车 | 13 |
\f |
走纸换页 | 12 |
\\ |
反斜线符"" | 92 |
\' |
单引号符 | 39 |
\" |
双引号符 | 34 |
\a |
鸣铃 | 7 |
\ddd |
1~3位八进制数所表明的字符 | |
\xhh |
1~2位十六进制数所表明的字符 |
字符类型说明符
字符变量的类型说明符是char
。字符变量类型定义的格式和书写规则都与整型变量相同。例如:char a,b;
每一个字符变量被分配一个字节
的内存空间,所以只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。
由ASCII码能够看出:
32
,经常使用的a为97 A为65
'3'
要变化成3
须要'3'-'0'=3
字符串
字符串是由一对双引号
括起的字符序列。例如: "CHINA" ,"C program" , "$12.5"
等都是合法的字符串。
字符串和字符不一样,它们之间主要有如下区别:
一个字节
的内存空间。字符串占的内存字节数等于字符串中字节数加1
。增长的一个字节中存放字符"\0"
(ASCII码为0)。这是字符串结束
的标志。实型数据类型指的就是浮点数或实数
实型数据类型的分类
类型说明符 | 比特数(字节数) | 有效数字 | 数的范围 |
---|---|---|---|
float |
32(4) | 6~7 | -10^38~10^38 |
double |
64(8) | 15~16 | -10^308~10^308 |
由以上内容能够看出:
实型数据的表示
0~9
和小数点
组成。 例如:0.0、25.0、5.78九、0.1三、5.0、300.、-267.8230 等均为合法的实数。注意,必须有小数点。
"e"
或"E"
以及阶码(只能为整数,能够带符号)组成。其通常形式为:a E n(a为十进制数,n为十进制整数)
其值为 a*10^n
。如:2.1E5
(等于2.1*10^5
) 3.7E-2
(等于3.7*10^-2
)实型数据在内存中的表示
前面的符号位很容易判断为0或者是1,指数部分称之为阶码
,这个阶码部分是由偏置值(127或1111111)和阶码真值
相加获得的,阶码真值符合IEEE-754
标准,这个标准规定了是这个数必定能写成1.--*2的多少次方
的形式,尾数部分的存储是原码的存储
。
常量 | 说明 |
---|---|
直接常量(字面量) | 能够当即拿来用,无需任何说明的量。 |
符号常量 | 用标识符表明一个常量。#define 标识符 常量 |
const 常量 |
const int x=3.14; |
int
型。也能够根据其值所在范围或后缀肯定其数据类型长整型字面值 123L 23l 无符号整型字面值 123U 123u 无符号长整型字面值 123UL 123ul long long型字面值 123ll 123LL
double
型,也可使用后缀f,F,l,L
肯定类型。求字符串的长度
字符串字面值是由一对双引号括起来的字符序列(以'\0'
结束)。
'\0'
,占据一个字节的内存。转义字符占据一个字节
,例如:'\xdd'
等。