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. UVA 11078 Open Credit System(扫描 维护最大值)

    Open Credit System In an open credit system, the students can choose any course they like, but there ...

  2. 【DP_背包专题】 背包九讲

    这段时间看了<背包九讲>,在HUST VJUDGE上找到了一个题单,挑选了其中16道题集中做了下,选题全部是HDU上的题,大多是简单题.目前做了点小总结,大概提了下每道题的思路重点部分,希 ...

  3. demo——06弹性和制作骰子

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. nginx Engine X静态网页服务器介绍

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. 反向代理(Reverse Proxy)方 ...

  5. node-mongodb-native的几种连接数据库的方式

    h1,h2,h3,h4,h5,h6,p,blockquote { margin: 0; padding: 0;}body { font-family: "Helvetica Neue&quo ...

  6. HTML新元素

    <canvas> 标签定义图形,比如图表和其他图像.该标签基于 JavaScript 的绘图 API <audio> 定义音频内容 <video> 定义视频(vid ...

  7. (转载)通过dbgrideh 从数据集中选择合适的记录

    通过dbgrideh 从数据集中选择合适的记录 //---------------------------------------------------------// 通过dbgrideh 从数据 ...

  8. 【XCode7+iOS9】http网路连接请求、MKPinAnnotationView自定义图片和BitCode相关错误--备用

    更新了iOS9和XCode7,之后,Swift变成了2.0,有了新的语法习惯,iOS也加强了安全方面的限制.我们原本的项目就会出现不少问题.先来看我之前的项目中出现的3个错误吧和相关的解决办法吧. 1 ...

  9. 移动App双周版本迭代实战--转载备用

    对于移动互联网产品来说,迭代的速度就是生命.我创业时做移动App时是一周一版,而现在是2周1版.相比起小公司,大公司迭代时间虽长,却更为不易,因为大公司流程更多,参与人数更多,需求更多,实现这样的快速 ...

  10. 理解和熟练运用js中的call及apply

    call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向. 因为 JavaScript 的函数存在「定义时上下文」和 ...