C语言的基本概念

第一个C程序例子。

 /* pun.c */
#include <stdio.h> int main(void)
{
printf("To C, or not to C: that is the question.\n");
return ;
}

其中,main函数的参数列表完整形式可以写成:

 int main(int argc, char *argv[])
{
  //用户代码
}

编译和链接(更多资料建议查阅GCC文档)

预处理:首先程序会被送交给预处理器(preprocessor)。预处理器执行行以#开头的命令(通常称为指令)。预处理器有点类似于编辑器,它可以给程序增加内容,也可以对程序进行修改。

编译  :预处理器修改后的程序现在可以进入编译器(compiler)了。编译器会把程序翻译成机器指令(即目标代码)。然而,这样的程序还是不可以运行的。

链接  :在最后一个步骤中,链接器(linker)把由编译器产生的目标代码和所需的其他附加代码整合在一起,这样才最终产生了完全可执行的程序。

扩展:Linux下C程序的编译于调试。

简单的C程序一般具有以下形式:

 指令

 int main(void)
{
语句
}

C语言极其依赖缩写词和特殊符号,这是C语言非常简洁(或者不客气地说含义模糊)的一个原因。即使最简单的C程序也依赖3个关键语言特性:指令(在编译前修改程序的编辑指令)、函数(被命名的可执行代码块,如main函数)、语句(程序运行时执行的命令)。

类型,用来说明变量所存储的数据的种类,它决定了分配的内存空间、取值范围以及可以对其进行的操作。

float型变量的缺陷:①进行算术运算时float型变量通常比int型变量慢;②float型变量所存储的数值往往只是实际数值的一个近似值。

变量必须先声明,后使用。

小技巧:当我们把一个包含小数点的常量赋值给float变量时,最好在该常量后面添加一个字母f(代表float)。

计算箱子的空间重量

 /* dweight.c */
/* Computes the dimensional weight of a 12" x 10" x 8" box */ #include <stdio.h> int main(void)
{
int height, length, width, volume, weight; height = ;
length = ;
width = ;
volume = height * length * width;
weight = (volume + ) / ; printf("Dimensions: %dx%dx%d\n", length, width, height);
printf("Volume(cubic inches): %d\n", volume);
printf("Dimensional weight (pounds): %d\n", weight); return ;
}

运行结果如下:

计算箱子的空间重量(改进版)

 /* dweight2.c */
/* Computes the dimensional weight of a box
from input provided by the user
*/ #include <stdio.h> int main(void)
{
int height, length, width, volume, weight; printf("Enter height of box: ");
scanf("%d", &height);
printf("Enter length of box: ");
scanf("%d", &length);
printf("Enter width of box: ");
scanf("%d", &width);
volume = height * length * width;
weight = (volume + ) / ; printf("Dimensions: %dx%dx%d\n", length, width, height);
printf("Volume(cubic inches): %d\n", volume);
printf("Dimensional weight (pounds): %d\n", weight); return ;
}

运行结果如下:

华氏温度转换为摄氏温度

 /* celsius.c */
/* Converts a Fahrenheit temperature to Celsius */ #include <stdio.h> #define FREEZING_PT 32.0f
#define SCALE_FACTOR (5.0f / 9.0f) int main(void)
{
float fahrenheit, celsius; printf("Enter Fahrenheit temperature: ");
scanf("%f", &fahrenheit);
celsius = (fahrenheit - FREEZING_PT) * SCALE_FACTOR;
printf("Celsius equivalent: %.1f\n", celsius); return ;
}

运行结果如下:

标识符:在C语言中,标识符可以含有字母、下划线和数字,但是必须以字母或者下划线开头。C语言是区分大小写的,对标识符的最大长度没有限制。

练习题:

6 为什么说在标识符中使用多个相邻的下划线(如current___balance)不太合适?

因为人们不太能够准确判断下划线的个数,因此容易出错。

《C语言程序设计现代方法》第2章 C语言基本概念的更多相关文章

  1. C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

    下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化 ...

  2. C语言程序设计-现代方法(笔记1)

    第一章 C语言概述 1.C语言的历史(1.1) 起源:贝尔实验室开发的UNIX操作系统的副产品.标准化:C89和C99.基于C的语言:C++,Java,C#,Perl. 2.C语言的优缺点(1.2) ...

  3. Java语言程序设计(基础篇) 第六章 方法

    第六章 方法 6.2 定义方法 1.方法的定义由方法名称.参数.返回值类型以及方法体组成. 2.定义在方法头中的变量称为形式参数(formal parameter)或者简称为形参(parameter) ...

  4. C语言程序设计现代方法_基本类型(第七章)

    C语言支持两种不同的数值类型,整数类型,浮点类型. C语言的整数类型有不同的尺寸.int类型通常为32位,但在老的CPU上可能是16位.有些可能是64位. 因此,int型如果在16位CPU上最大值就是 ...

  5. 《C语言程序设计现代方法》第4章 表达式

    C语言的一个特点就是它更多地强调表达式而不是语句,表达式是表示如何计算值的公式. 当表达式包含两个或更多个相同优先级的运算符时,运算符的结合性(associativity)开始发挥作用.如果运算符是从 ...

  6. 《C语言程序设计现代方法》第3章 格式化输入/输出

    完整的细节将留到第22章中介绍. 调用printf函数一次可以打印的值的个数没有限制. 注意:C语言编译器不会检查格式串中转换说明的数量是否和输出项的数量相互匹配,也不会检查转换说明是否适合要显示项的 ...

  7. C语言程序设计现代方法1,2,3章

    1:浮点型(float)运算比int慢,并且可能存在舍入误差 如float存储0.1,以后使用可能会变成0.099999999987 2:宏定义只用大写,这是大多数C程序猿遵循的规范! C语言区分大小 ...

  8. 《C语言程序设计现代方法》第4章 编程题

    1 编写一个程序,要求用户输入一个两位数,然后按数位的逆序打印出这个数. 方法一:没技术含量的 #include <stdio.h> int main() { int high, low; ...

  9. 《C语言程序设计现代方法》第1章 C语言概述

    C语言的特点:C语言是一种底层语言.C语言是一种小型语言.C语言是一种包容性语言. C语言的优点:高效.可移植.功能强大.灵活.标准库.与UNIX系统集成. C语言的缺点:C程序更容易隐藏错误.C程序 ...

随机推荐

  1. zoj 1649 Rescue (BFS)(转载)

    又是类似骑士拯救公主,不过这个是朋友拯救天使的故事... 不同的是,天使有多个朋友,而骑士一般单枪匹马比较帅~ 求到达天使的最短时间,杀死一个护卫1 units time , 走一个格子 1 unit ...

  2. ASP.NET缓存 Cache

    缓存介绍 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论多 ...

  3. WEB开发原则

    1.最小权限原则,只允许用户做****,而不是"不允许用户做****"2.浏览器查看的是服务端代码的执行输出的文本,除非服务器有漏洞,否则浏览者无法查看 服务端的ASPX,CS代码 ...

  4. ubuntu zendDebugger.so 加载不上的问题

    参考文章   http://blog.sina.com.cn/s/blog_6612d5810101dapf.html 装zenDdebugger是为了在eclipse中调试用!!!!!!!结果搞了半 ...

  5. JavaScript符串中每个单词的首字母大写化

    map() + replace() function titleCase(str) { var convertToArray = str.toLowerCase().split(" &quo ...

  6. mysql 存储引擎 myisam innodb 区别

    虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了.可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引 ...

  7. 为什么很多语言选择在JVM上实现

    非常经济地实现跨平台.你的语言编译器后端只需要输出 JVM 字节码就可以.跨平台需要极大的工作量,举个例子,只是独立开发生成本地代码,就需要花费大量精力去针对不同平台和处理器进行优化(比如 Firef ...

  8. wpf RadioButton控件的一个bug,onpropertychanged后会修改旧属性的值

    测试代码下载:http://files.cnblogs.com/djangochina/RadioButtonBug.zip 从上面列表选择不同的行,再设置下面不同的radiobutton看看结果 b ...

  9. AOP和IOC理解

    在百度上看到一篇很有意思的文章,是对AOP的一种解释,如下:(摘自:百度文库的 AOP和IOC最容易理解的说明(Spring知识小计)): IOC,依赖倒置的意思, 所谓依赖,从程序的角度看,就是比如 ...

  10. 从头搭建Spring MVC

    1.拷贝jar文件 2.填充Web.xml 在/WEB-INF/web.xml中写入如下内容: <?xml version="1.0" encoding="UTF- ...