Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1125621
  • 博文数量: 165
  • 博客积分: 5957
  • 博客等级: 大校
  • 技术积分: 2015
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-24 15:04
文章分类

全部博文(165)

文章存档

2014年(10)

2013年(14)

2012年(9)

2011年(22)

2010年(17)

2009年(17)

2008年(26)

2007年(34)

2006年(16)

我的朋友

分类: C/C++

2007-12-29 14:56:43

1、c出错的可能位置:可以是编译时出错,可以是链接时出错,可以是运行时出错,不同的地方可能导致的错误原因差异很大
2、gcc -S 1.c 产生1.s,就是产生了汇编语言后停止编译
 gcc -c 1.c 产生1.o,仅产生目标代码而跳过链接程序的步骤
 -O是优化选项,后跟优化等级,值越大,优化等级越高,所需时间越长
    一点疑问:目标代码的内容是机器语言指令,既然机器语言指令都是由0和1组成,为什么我们打开.o的目标文件时显示的却是乱码?
    自己答:.o文件的内容应该是指令存储在文件里的一个存储形式,指令虽然由0和1组成,但表象在操作系统层面看到的就是乱码
    但还是概念模糊
3、return 0是个好习惯
4、机器语言即计算机能识别的语言,由0和1组成。
   汇编语言实质和机器语言相同,都是对硬件进行操作,只不过指令采用了英文缩写的标识符来容易记忆。
5、链接的过程是由链接程序来完成的:将目标文件和函数库中的目标代码组合起来,生成最终的可执行程序的这一过程被称为链接
6、一个习惯:常量名全大写字母;变量名要坚持自己的风格,比如全小写字母或者下划线分割或者驼峰表示法,首选下划线风格
7、正数以原码形式存放在内存中
    负数以补码的形式存放在内存中
    C中浮点常量都是以双精度型来存放和表示的
    求补码的2种方式:(1)符号位不动,写出原码的反码,然后反码加一就是补码; (2)模减去原码就是补码
    内存中的产生的补码如何还原成负数:补码的反码减去一,然后转换为10进制数,就得到了该负数
8、\0 空字符
9、定义符号常量:#define CONSTNAME literal
  #define语句无分号结尾
10、被const修饰的变量初始化后值不被修改
11、变量名的长度限制取决于各编译器
12、字面常量值可修改,符号常量值全局不可修改。符号常量要规范定义,可以不用知道它的值就能理解它在代码的含义
13、不同的系统int存储的字节不同,有2字节的,有4字节的,2个字节--最小值-32768;4个字节的--最小值-2147483647
14、编译指令定义:#define MAXIMUM 100
   关键字定义:const int MAXIMUM = 100
   二者差别涉及到指针和变量作用域
15、赋值语句本身也是一个表达式
16、++x,y--:前缀模式,先执行递增或递减运算,再计算表达式的值;
       后缀模式,先计算表达式的值,在执行递增或递减运算。
17、关键字sizeof实际上也是个运算符
18、c中的不等是!= , 不支持<>
19、if……else if……else……;尽量在条件中运用==使得逻辑表达更清楚,不要用!=,习惯问题
  if(x)等价于if(x != 0)
20、&&的优先级高于||
21、0表示false,非0表示true,即使是负数也被认为是true
22、exp=exp1?exp2:exp3;  如果exp1值为真,则整个表达式的值为exp2的值,否则为expe3的值
23、逗号运算符:x = (a++,b++) => 2个表达式的值都会计算,先计算左边的,再计算右边的;整个表达式的结果是右边的子表达式的值
24、函数的功能越单一越好
25、内联函数通常很短,编译器将尽可能对其进行优化,提高其运行速度
  inline int toInches(int Feet)
  {
   return (Feet/12);
  }
26、三字符序列
     Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
     Replacement:      [    ]    {    }    #    \    ^    |    ~
cc -trigraphs -o test test.c
 test.c内容:
#include
int main(void)
{
        puts(" ??= ---> # ");
        puts(" ??( ---> [ ");
#        puts(" ??/ ---> \ ");
        puts(" ??) ---> ] ");
        puts(" ??' ---> ^ ");
        puts(" ??< ---> { ");
        puts(" ??! ---> | ");
        puts(" ??> ---> } ");
        puts(" ??- ---> ~ ");
        return 0;
}
但??/始终测试都不对,不知道why
阅读(1535) | 评论(0) | 转发(0) |
0

上一篇:c基础知识复习二

下一篇:POSIX

给主人留下些什么吧!~~