C语言的数据类型
1. /* 2. char 字符数据类型 3. short 短整型 4. int 整形 5. long 长整型 6. long long 更长的整形 7. float 单精度浮点数 8. double 双精度浮点数 9. */
数据类型在编程中是非常重要的一个基本知识,尤其是在C语言中,每一行代码的编写和调用都必须要符合数据类型原则,比如你需要存储一个变量,叫做常量,那么就会有对应的规则。
类型大小
sizeof计算这些关键字变量的字节
那么什么是字节呢?
计算机中单位
计算机识别二进制的,0和1,所有的代码最终都会被编译成机器码,被内部的编译器进行解读
八进制:只含0-7;十进制:只含0-9
bit——比特位(最小的单位)
byte——字节(1个字节=8个比特位)
char类型只可以存储一个字节(8bit),故我们在调用的时候也要注意,使用单引号进行存储,不可以使用双引号。以及在存储浮点数类型,需要在数字后面加一个 f 作为标识。
变量的分类
局部变量和全局变量
上面的局部变量global变量的定义其实没有什么问题的
当局部变量和全局变量同名的时候,局部变量优先使用
变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的
而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期。
字符串-转义字符-注释
字符串
在Python语言中,我们总是不会太在乎引号到底是双引号还是单引号,因为都可以用,而且使用起来比较的方便。但是在C语言中确实两种不一样的概念,比如:这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。而单引号所包裹的是一个字符。
#include <stdio.h> int main() { printf("你好,王小王-123!\n"); printf('我'); return 0; }
既然,我们知道了,单引号只可以存放一个字符,那么我们就放入了一个字,为什么程序不不不报错,但是却没有打印出来任何信息呢?
因为无论是java还是C#还是C语言,使用printf都是格式化字符串,当然要用双引号,单引号包括的是字符,双引号才是包括字符串。
单引号在字符常量时使用,表示单个字符。
当在单引号中出现两个及以上字符时或没有字符时,编译出错。
"A" 表示字符串,该字符串只有1个大写字母A组成,占用2个字节空间,每个字符串末尾自动会加上一个空字符 '\0'
空字符常量使用转义符号 '\0'表示,空白字符串使用双引号表示 ""
char c = 'aA'; // 编译出错,单引号只能是一个字符
如果在这里存放一个汉字,从数量上看虽然是一个,但是一个汉字也是用2个字节存放的,所以也会编译出错
char c = ''; // 单引号中间没有任何字符时,编译出错
输出单引号,注意一定要使用转义字符,如果不使用转义字符,就会被系统是被为前面的单引号所使用,这样就会出现语法错误。
那么如果我们不使用单引号,我们需要使用双引号里面存放单引号,最终输出呢?那么此时我们就需要用到数组存放字符串的知识了。
总结
(1)单引号括起来的单个字符代表整数
(2)双引号括起来的字符代表字符指针
(3)C编译器接受字符和字符串的比较,无任何意义
(4)编译器允许字符串对字符变量赋值,只能得到错误
字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串
内容。