(一)编译的具体过程:

以前一直觉得,C代码的具体实现过程就是把几个.c文件编译成.o文件,然后链接在一起就可以了。可是最近在看C Prime Plus查漏补缺基础知识的过程中发现,这里的链接其实链接的东西有三类。

一.是原来编译产生的.o文件,这个.o文件不可执行,仅仅包含了源文件的代码转机器语言代码后的结果。

二.是启动代码,这个代码相当于是你的程序和操作系统之间的接口,不同类型的操作系统的这部分代码是不一样的。

三.库例程的代码。这部分就是C标准库中具体用到的函数部分的代码(printf,scanf这类的),链接器只会提取库中你所使用的那部分其他部分则不会提取。

 (图片来自于C Prime Plus p8)

(二)printf中%的具体作用

printf("%d  \n",a);

这里的%告诉程序把一个变量在这个位置输出,后面的d告诉程序输出一个十进制整数变量。

(三)使程序可读的技巧

1.选择有意义的变量名和使用注释

2.使用空行分隔一个函数概念上的多个部分

3.每个语句用一行

int main(void)   /* converts 2 fathoms to feet  */ -使用注释
{
int feet , fathoms; -------------------选用有意义的名字
-------------------使用空行
fathoms = 2;
feet = 6*fathoms; --------------------每行一个语句
printf("There are %d feet in %d fathoms!\n ",feet,fathoms);
return 0; }

  

总结:今天的内容不是很难,但是却都是一些很重要的细节,如果能把这些地方做好,对于以后的成长我觉得很有帮助!

(一)C的编译,printf,规范化的更多相关文章

  1. printf("%f\n",5);

    http://zhidao.baidu.com/link?url=87OGcxtDa6fQoeKmk1KylLu4eIBLJSh7CA3n5NWY-Ipm9TxZViFnIui307duCXWhaM0 ...

  2. C学习笔记之预处理指令

          一.什么是预处理指令            预处理指令是告诉编译器在编译之前预先处理的一些指令,有宏定义,文件包括,条件编译. 预处理指令一般以 # 号开头,能够出如今文件的不论什么地方, ...

  3. IOS开发学习笔记008-预处理

    预处理 1.宏定义 2.条件编译 3.文件包含 注意: 1.所有预处理都是以#开头,并且结尾不用分号. 2.宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误 3.作用域也是从定义到代码 ...

  4. stm32_f103使用gcc编译的环境下printf打印函数的实现

    前记   gcc编译使用的printf打印函数需要的底层函数是和其他编译器不同的,以前的是无法使用的,这里有两种方法,一种是使用gcc库里面的printf函数,自己实现底层IO函数_write.另外一 ...

  5. vs2012解决scanf,printf编译出错的问题

    转自http://www.th7.cn/Program/c/201303/127343.shtml 在VS 2012 中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: er ...

  6. 反编译查看printf()的方法

    源代码: package test2; public class ExplorationJDKSource { /** * @param args */ public static void main ...

  7. Compiler Theory(编译原理)、词法/语法/AST/中间代码优化在Webshell检测上的应用

    catalog . 引论 . 构建一个编译器的相关科学 . 程序设计语言基础 . 一个简单的语法制导翻译器 . 简单表达式的翻译器(源代码示例) . 词法分析 . 生成中间代码 . 词法分析器的实现 ...

  8. 编译原理_P1004

    龙书相关知识点总结 //*************************引论***********************************// 1. 编译器(compiler):从一中语言( ...

  9. 菜鸟在C语言编译,链接时可能遇到的两个问题

    最近在看 CSAPP (Computer Systems A Programmers Perspective 2nd) 的第七章 链接.学到了点东西,跟大家分享.下文中的例子都是出自CSAPP第七章. ...

随机推荐

  1. css 剩余宽度完全填充

    从网上转的. <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  2. LeetCode 404. Sum of Left Leaves (C++)

    题目: Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are t ...

  3. Scrum Meeting 10.29

    成员 今日活动 明日计划 用时 徐越 配置tomcat+eclipse 将上届后端代码迁移到服务器 4h 赵庶宏 与数据库连接的java代码学习及编写,测试代码 进行数据库的建立并学习数据库方面的知识 ...

  4. 20162325 金立清 S2 W9 C18

    20162325 2017-2018-2 <程序设计与数据结构>第9周学习总结 教材学习内容概要 堆是一棵完全二叉树,其中每个元素大于等于其所有子结点的值. 向堆中添加一个元素的方法是,首 ...

  5. 求int型数组和最大子数组 续

    之前的博文里已经实现过该程序的构思.编译.运行,本次就不再重复与之相雷同的内容. 题目:与别人借组,借助求int型数组最大和子数组的问题,考虑大数溢出和int取值范围的问题 要求: 调试程序  当子数 ...

  6. GIT理解

    以前从来没听过GIT,根本不知道是什么东西.老师突然让注册一个GIT帐号,不知道怎么注册, 真有点不知所措了,又听说是全英文的,感觉也是醉了!登录进去看了看,看的似懂非懂,自己 也不敢妄下定论于是上网 ...

  7. Internet History, Technology and Security (Week4)

    Week4. We are now moving into Week 4! This week, we will be covering commercialization and growth. T ...

  8. jieba库的应用

    #!/usr/bin/python# -*- coding:utf-8 -*- import imp,sys imp.reload(sys)from matplotlib.font_manager i ...

  9. 51单片机RAM 数据存储区学习笔记

    转自:http://www.eepw.com.cn/article/216237_2.htm 1.RAM keil C语言编程 RAM是程序运行中存放随机变量的数据空间.在keil中编写程序,如果当前 ...

  10. ABP ModuleZero 添加角色_创建角色是报错的问题解决方案

    ABP升级后,大概3.6.1以后,在.net framework里面,从官方下载的Module zero模板添加角色是出现下面错误. 这个问题,算是新版apb的一点小缺憾,好像在.net core的模 ...