对于 C 语言的学习,必须的有一个标准:以能否编译通过,运行出结果为准,相信我,目前市场上面主流的编译器都是没有问题,编译不通过,第一想法,是程序的问题,而不是编译器的问题,先把这个思想灌输给大家常量
常量:写 C 程序的时候,在源程序文件中表达不变的量的各种 “合法” 的书写方式
1、整型(int、short、long)
A、十进制:是以数字 0-9 组成的整数,eg:123、5、0、-23 等
B、八进制:是以数字 0-7 组成,并且是以 0 开头的整数,eg:014、-012
C、十六进制:是以 0-9 和 a-f/A-F 组成,以 0x 或者 0X 开头额整数,eg:0x41、0XAc
2、浮点型(float、double)
在 32 位系统下,默认浮点类型为:float
在 64 位系统下,默认浮点类型为:double
科学计数法:aeb,其中 a 必须是整型或者小数,b 必须是整型,e 可以用 E,eg:3e-2 的意思是:3 * 10^-2 = 0.03
3、字符常量
A、可以写字符:'A'、'0'、'a'
B、可以直接描述其ASCII码:65、32、97 (下面普及 ASCII 码)
C、八进制、十六进制均可以表示字符常量,分别为:'\ '、'\x '
D、转义字符:就是针对有歧义的字符,避免出现二义性,C 语言引入了一个机制:在 \ 的后面, 写一个字符,就可以表达特定的字符本身含义
eg:' <==> '\'' ,这样才能表示出是一个单引号的意思
\ <==> '\\',这样才能表示出一个 \ 的意思
4、字符串常量:在" "里所表达的都是字符串常量
eg:"ABC"、"\x41\x42\x43" (十六进制的字符串常量,其实只有 3 个字符)
字符串长度:不包括 " ,只数字符个数
"":长度为 0 的字符串叫做,空串
" ":长度为 1 的空格串
ASCII码知识普及:在计算机中,像汉字、字符是不可能存储的,计算机只认识 0 和 1,对于字符,计算机是通过点阵矩阵进行存储(一个英文字符将对应一个点阵信息),保存一个英文字符的点阵信息,需要 2 字节的存储空间
在计算机中,对字符的管理,是通过编号进行的,编号的三个原则:
A、从 0 开始编号
B、连续编号
C、用二进制编号
对英文字符的点阵信息使用一个字节的低 7 位进行编号,这个编号就叫做:ASCII 码
' ' (32):空格的 ASCII 码是 32
'0' (48):字符 0 的 ASCII 码是48
'A' (65):字符 A 的 ASCII 码是65
'a' (97):字符 a 的 ASCII 码是97
ASCII 码 就是字符所对应的编号,看到 ASCII 码就等价于这个编号(数字),字符即数字
字符零:'0' ==> 48
零:0 ==> 0 ==>'\0',这个是真正的 0
对于字符的大小比较,或者是字符串的大小比较,其实都是对其 ASCII 码进行比较,换为相应的编号,做减法即可
关于全角和半角:全角实质上就是中文点阵,占 2 字节,半角就是英文点阵,也就是 ASCII 码,占 1 字节,在 C 语言程序设计中,只能使用英文的标点,不得使用中文标点
变量本质:内存中一段连续的存储空间,空间即变量
计算机表达信息的最小物理单位:一个二进制位(比特 bit)
1B = 8bit
1KB = 1024B = 2^10B
1MB = 1024KB = 2^20B
1GB = 1024MB = 2^30B
对于内存的理解:
A、内存是由多个字节组成的一维、线性、连续存储空间
B、字节是内存分配存储空间的基本单位
C、对于内存中的多个字节,通过对字节(也就是内存空间 1B)进行唯一性的编号来管理
D、参与字节编号的二进制位数,将决定这个计算机所能管理的内存大小
变量的三个要素:
变量名称:每个变量都必须起一个英文名,变量名称要能很清晰的代表其所表达的意思,eg:成绩,用变量名:score
命名原则:
A、必须以字母或者下划线(_)开头
B、只能由字母、数字、下划线字符组成
C、不能使用 "关键字" / 起名
D、C 语言区分大小写
变量类型:决定了该变量在内存中的大小(字节数)
变量的值:对该变量空间中进行一系列运算后,所得到的结果
定义变量的本质:申请存储空间,变量的类型在定义时被确定,其终生不会改变,在标准 C 下面,变量必须先定义,后使用,定义变量的语句必须在所有的有效语句之前,且定义变量不赋值,默认为垃圾值
int a = 0; 定义了一个 4 字节的存储空间,且初始值为 0,在内存角度,这 4 个字节紧挨着,也就是每个字节空间都为0x00,其十六进制为:0x00000000,数据类型和表达式下篇见。。。
注意:常量和变量所占的内存空间是不一样的,一般常量在常量区,变量分配的空间在栈上,具体的内存四区有时间可以写
,