AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C语言

PcrazyC的C语言总结

51自学网 2015-09-08 http://www.51zixue.net

原帖及讨论:http://bbs.bccn.net/thread-129240-1-1.html

总算把C语言又看了一遍,总结如下:

1.    二制数中原码.反码.补码以及进制之间的转换:

原码:由符号位和该数的绝对值的二进制数组成.
反码:负数的反码为除符号位以外所有位均取反的结果.正数
          的反码与原码相同,其补码也一样,后面不说了.
补码:负数的补码是在其反码的基础之上加1;
下面以-123为例求其各码:
原码:符号位为1,二进制数为1111011,(其转换参考下面进制的转换)所以其原码为11111011.
反码:10000100
补码:10000101
进制的转换:
十进制数转其他:
(1):整数:以十进制数123转换为八进制数为例:
    123/8=15……3    ----------最低位
    15/8=1………7
    1/8=0………1 -----------最高位
    结果就是173(从下到上),商为0止
(2):小数:0.325转换为二制数为例:
        乘2                    纯小数部分            整数部分
    2 * 0.375=0.750             0.750                    0
    2 * 0.750=1.5               0.5                      1
    2 * 0.5 =1.0                0                        1
结果就为0.011(从上到下),纯小数为0终止.否则一直进行下去
直到字节数已满.
其它转十进制:以十六进制数A5FE转换十进制数为例:
    A5FE=A * 16^3+5 *16^2+F * 16^1+E=42494
二进制数:
    十进制数不用说了,转八进制数时,从低位起,每三位对一位,不足补0;转十六进制数,从低位起每四位对一位,不足补0;其它转二进制数是一个相反的过程.
下面举两个例子:
(1);二进制数10101101转八进制数:
    010      101        101
    |      |        |
    2         5        5
    结果就是255
(2):十六进制A69E数转二制数:
    A    6    9    E
    |    |    |    |
    1010  0110   1001  1110
    结果就是1010011010011110

2.    变量在内在中的存放与转换.

(1)    存放:
整型数据是转换成相应的补码后直接存放在内存中,而实型与整型的存放不同,它是以指数形式存放,即符号位+小数部分+指数部分.比如:12345在内在中的存放形式是这样的:第一位符号位是’+’,接下来存放的是小数,即0.12345,最后是指数5,而小数部分和指数部分所占的位数因编译系统的不同而不同,不必深究,
(2)    转换:
    所有可以转换的数据类型之间的转换都遵循一个规则:按存储单元的存储形式直接传送,从低位开始.比如:将十进制数-123转换为八进制数:    将其补码原样传送由于八进制数无符号(十六进制数也一样),所以最高位的1在八进制数的内在单元中已不代表符号,而代表数值进行运算.不同的编译器和机器所得的结果不一定相同,因为整型变量所占的字节数不同,现以十六位机(另外还与编译器有关,假如整型占两个字节)为例:-123的补码为1111111110000101,将其换算成八进制数为177605,而在32位机上(假如整形占4个字节),其结果就是37777777605.
实型转换成整型时,得到的绝不是你想要的结果,因为实型的存储形式是按指数形式存储的,低位中存储的是指数部分,当传送的时候,只是将指数部分或指数部分加上小数部分的小部分传送给整型变量,得到的结果不可能是你想要的结果.

3.字符-----    ‘/’的作用:

与一些字母组成转义字符,比如/t、/n之类的,与数字组成代表八进制数.比如:/123代表八进制数123即十进制数83.另外说明一下/r,其作用是将当前位置移到本行开头,后面再输入字符时,原有的字符将会被覆盖,比如printf(“abcd/r  /n“);将会输出”  cd”,而不是”  abcd”.还有/b也是一样.

4.自增自减:

(1).运算符在前时,先进行运算再进行取值,运算符在后时,先进行取值再进行运算.比如a=++i ;相当于i=i+1;a=i ; ,而a=i++;则相当于a=i;i=i+1;
(2).自增自减运算符不能用于常量 (表达式结果也是常量),只能用于变量.
(3).警告:不要使用+++,---之类的运算符,不同的编译器有不同的结果,也不要在一个式子中对同一变量进行多次++或--,比如:(i++)+(i++)+(i++),同样不同的编译器会得到不同的结果.

5.逗号运算符.

结合方向是自左向右,结果为最后一个表达式的值,其优先级最低.注意函数中的”,”一般是参数分隔符,不是逗号运算符,详情见44楼:
 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,51zixue.net不保证资料的完整性。
 

上一篇:教你如何放大显示ASCII字符(文本模式)  下一篇:深入认识Turbo C编译器