AaronYang风格 C语言挑讲[二][基本类型、运算符和表达式]
2013-06-16 01:31
218 查看
AaronYang风格就是:不讲老生长谈的东西,挑主题内难懂的地方细讲,其他总结一笔带过,有口诀教口诀,示例实践出来,文章内容充实。
本文原理理解性方面的较多,但是都被我用gif图片(自己photoshop做的)讲解
更底层的东西,我自己都不懂的,不可能拿出来讲的
本文是针对有学过其他编程语言的来学的,有很多地方我跳过略讲,所以这不是一篇入门的文章
我在看C的时候,其实发现了一些挺好玩的东西,比如宏替换,带符号,不带符号的类型。C的常量定义也不一样。
重点讲位运算符的运算,还有逗号运算符
最主要是每个类型占了多少个字节的理解,以后优化程序可以用到。
要避免不必要的类型转换
精彩预览:
比如课外知识,很多人知道怎么去写编程,但原理知道的很少,知道怎么用,比如操作系统32位和64位的关于编程方面的区别
这里讲的很容易理解,自己做了些图片方便理解,如果想直接看,就在本文末最后一节,呵呵
数据类型基本一览
其他概念:
打开程序时候,数据会存在内存中(个别可能在寄存器中),我们要对每个数据在内存中分配若干个字节,用于存放数据。数据所占用的内存字节数称为该数据的“数据长度”。所以我们要定义不同的数据类型,来安排合适的长度去分配数据存放。于是我们需要数据类型这个概念,不知道有没有听懂了
常量
(一)整型常量
十进制:平常的数字写法,0,22,+11,-3八进制:0开头的书写形式,例如00,+08,-033,021
十六进制:0x开头的书写形式,例如0x1,-0x121,+0x12,0x21
占用字节:一般微型机中占用2个字节,不分进制,他们的数值范围都是十进制的-32768~+32767
长整型常量:范围-2147483648~+2147483647,占用4个字节。
书写形式:在整数的末尾加上l或者L例如:10L-011L+0x15L
那么其他的都是短整型常量了。如果整型常量后面没有字母“L”或“l”,而且超过了短整型常量能够表示的数值范围,则自动认为该常量是长整型常量了,例如-32769、32768、40000都是长整型常量了
总结:整型常量分短整型和长整型两种,又分十进制,八进制,十六进制三种书写形式,使用时,要注意区分。例如,88和88L,数值一样,但是它们在内存中占用不同数量的字节;比如10,010L,0x10虽然是短整型常量,但是表示的整数值不一样。
(二)实型常量
一般形式[+或者–]整数部分小数点小数部分
指数形式
[+或者–]整数部分小数点小数部分e或者E[+或者–]指数(就是普通的整数)
例如12.345e3就等于12.345乘以10的3次方就是12345
12345E-3就等于12345乘以10的-3次方就是12.345
总结:实型常量在一般的微机中占用4个字节,数值范围都是-10的38次方到10的38次方,有效数字是7位
例如:1.23456789和1.234567是相同的,因为有效数字是7位,所以后两位是无效的
(三)字符常量
就是char类型了,C语言中,字母区分大小写的,‘a’和‘A’是不一样的在内存中,每个字符常量都占用一个字节,具体存放的是该字符对应的ASCII代码值。例如‘a’‘A’‘1'‘%’‘\r’‘\x3d’在内存中的字节中存放的分别是十进制整数976549371361
总结:由于整型常量在内存中存放的是整数值,如果其值在0~127之间,C语言规定也可以将其看成一个字符型常量,就是数字当符号使用。例如:整型常量111、70、40可以当做字符常量‘o’‘F’‘(’来使用
有个好玩的例子:‘a’+5这里a就会被当做97使用,所以等于结果值102,在C#中我也试过了,也是如此