C语言基本概念

目录

2.1 编写一个简单的C程序

2.1.1 编译和链接

2.1.2 集成开发环境

2.2 简单程序的一般形式

2.2.1 指令

2.2.2 函数

2.2.3  语句

2.3 注释

2.4 变量和赋值

2.4.1 类型

2.4.2 声明

2.4.3 赋值

2.4.4 显示变量的值

2.4.5 初始化

2.4.6 显示表达式的值

2.5 读入输入

2.6 定义常量的名字

2.7 标识符

2.7.1 关键字

2.8 C程序的书写规范


2.1 编写一个简单的C程序

#include 
int main()
{
    printf("To C,or not to C:that is the question.\n");
    return 0;
}
第一行: #include  是必不可少的,它“包含”了 C 语言标准输入/输出库的相关信息。
 
第二行: 程序的可执行代码都在 main函数中,这个函数代表“主”程序。
第三行: printf函数来自C语言提供的标准输入/输出库,可以在屏幕上输出我们想要输出的内容
(代码\n 告诉 printf 函数执 行完消息显示后要进行换行操作)
第四行: return 0表明程序终止时会向操作系统返回值 0(正常返回)。

2.1.1 编译和链接

        尽管上述程序十分简短,但是为运行这个程序而包含的内容可能比想象的要多

1、将上述程序代码的放在名为 pun.c 的文件(文件的名字无关紧要,但是编译器通常要求程序在.c后缀的文件中)

2、将程序转化为机器可以执行的形式:
  1. 预处理:以.c为后缀的文件会被交给预处理器,预处理器会处理文件中以#开头的内容
  2. 编译:预处理后的文件会进入编译器,编译器会将文件翻译成电脑可读懂的内容(机器码)
  3. 链接:链接器将编译器产生的目标代码和所需的其他附加代码整合在一起,这样才最终产生了完全可执行的程序(附加代码包括程序中用到C语言提供的标准库函数,如printf函数)

C语言基本概念_第1张图片 

        Luckily,上述过程往往是自动实现的。此外,由于预处理器通常会和编译器集成在一起,所
以人们甚至可能不会注意到它在工作。 根据不同的编译器和操作系统,编译和链接所需的命令也
是多种多样的。

2.1.2 集成开发环境

        我们可以使用 集成开发环境(integrated development environment, IDE) 来编写代码。集
成开发环境是一个软件包,我们可以在其中编辑、编译、链接、执行甚至调试程序。组成集成开发
环境的各个部分可以协调工作 (例如,当编译器发现程序中有错误时,它会让编辑器把包含出错代
码的行突出显示) 以下是几个常见的集成开发环境以及它们的优缺点:
  • VS2022:安装报包较⼤,安装简单,⽆需多余配置,使⽤⽅便
  • XCode:苹果电脑上的开发⼯具
  • CodeBlocks:⼯具⽐较⼩众,需要配置环境,不太推荐
  • DevC++:⼩巧,但是⼯具过于简单,对于代码⻛格的养成不好,⼀些竞赛使⽤
  • Clion:⼯具是收费,故不推荐⼤家使⽤

vs2022安装视频教学:https://www.bilibili.com/video/BV11R4y1s7jz/ 

2.2 简单程序的一般形式

最简单的 C 程序也依赖 3 个关键的语言特性:指令(在编译前修改程序的编辑命令)、函数(被命名的可执行代码块,如 main 函数)、语句(程序运行时执行的命令)
指令

int main(void) 
{ 
     语句  //注释
}

2.2.1 指令

基本概念:在编译C程序之前,预处理器执行的内容称为指令
特点:1、所有指令都是以字符#开始的(该 字符可以区分 C 程序中的指令和其他代码)2、指
默认只占一行,每条 指令结尾无分号 或其他特殊标记
        指令#include 表明,在编译器编译前把会头文件“stdio.h”中的信息“包含”到
程序中包含 C 标准输入/输出库的信息,C 语言拥有大量类似于 的头文
件,每个头都包含一些标准库的内容)  我们所编写的每一段C程序都需要该指令

2.2.2 函数

基本概念:是构建程序的构建块(事实上,C 程序就是众多函数的集合)

分类:自定义函数(程序员自己编写的函数)、库函数(编译器提供的一系列函数)

注意事项:

1、函数的功能取决于它内部的语句,若语句是return x + 1,则该函数的作用就是返回x+1的结果

int Add(int x)  //Add函数的返回类型为整型int,函数的形参为整型的x
{
    return x + 1; //函数的作用是返回x + 1的结果,类似于数学中的f(x) = x + 1;  
}

2、虽然一个 C 程序可以包含多个函数,但主函数 main 有且只能有一个,它是整个C程序的入口,并且main的名字不能被更改,即使是MAIN

2.2.3  语句

基本概念:语句是程序运行时执行一条条的命令

注意事项:每条语句都要以分号结尾(复合语句除外)

语句可以连续占用多行,有时很难确定结束位置,故用分号来向编译器显示语句的结束位置

2.3 注释

作用:1、用于解释编写代码的目标、原因和实现方法(解释你的代码是用来干什么的)2、将一些

你不需要的内容隐藏起来

分类:单行注释//、多行注释/*  */

C语言基本概念_第2张图片

特点:可以出现在程序的任何位置,既可以独占一行,也可以与其它语句出现在同一行

2.4 变量和赋值

基本概念:大多数程序在产生输出之前往往需要执行一系列的计算(比如x + 1),因此需要在程序执行过程中存放临时的数据(想要计算x + 1,起码x得代表一个数吧,假如x = 1,那么x存放的就是一个临时的数据1,x就是变量),C 语言存放临时数据的存储单元被称为变量(x就是变量,叫它变量是因为如果x = x + 1 呢?1 + 1 后x中存储的临时数据就变为2了)

2.4.1 类型

基本概念:每一个变量都必须有一个类型(type)

作用:类型用来说明变量所存储的数据的种类

两种常见的类型:

        int类型的变量可以存储整数,如 0、1、392 。但是,整数的取值范围是受限制的。最大的整数通常是 2 147 483 647,但在某些计算机上也可能是 32 767。
        float类型变量可以存储比 int 型变量大得多的数值。而且,float 型变量可以存储带小数位的数,如 379.125。
        但 float 型变量也有一些缺陷。进行算术运算时 float 型变量通常比 int 型变量慢;更重要的是,float 型变量所存储的数值往往只是实际数值的一个近似值。如果在一个 float 型变量中存储 0.1,以后可能会发现变量的值为0.099 999 999 999 999 87,这是舍入造成的误差。

2.4.2 声明

基本概念:在使用变量之前必须对其进行声明(告诉编译器变量是什么类型的)

方式:变量的类型+变量的名字(自己起的)
int height;  //int类型的变量 height
float profit; //float类型的变量 profit

如果几个变量具有相同的类型,就可以把它们的声明合并:

int height, length, width, volume; 
float profit, loss;

注意事项:程序中用到的变量、函数等都需要先声明后使用

#include 
int main()
{
    int x;
    x = x + 1;
    int y;
    y = y + 1;
    return 0;
}

2.4.3 赋值

基本概念:变量通过赋值的方式获得值

int height = 8;
int length = 12;
float profit = 2150.48f;

注意事项:

1、当把一个包含小数点的常量赋值给 float 型变量时,最好在该常量后面加一个字母 f,不加 f 可能会触发编译器的警告;

2、混合类型赋值(例如把 int 型的值赋给 float 型变量,或者把 float 型的值赋给 int 型变量) 是可以的,但不一定安全

2.4.4 显示变量的值

printf 函数可以显示出变量的当前值:
#include 
int main()
{
    int height = 8;
    printf("Height: %d\n", height);
    return 0;
}
        占位符%d 用来指明在显示过程中变量 height 的值的显示位置,%d 仅用于 int 型变量。如果
要显示 float 型变量,则要用%f 来代替%d。默认情况下,%f会显示出小数点后 6 位数字。如果要
强制%f 显示小数点后 p 位数字,可以把.p 放置在%和 f 之间:
#include 
int main()
{
    float profit = 2150.48f;
    printf("Profit: $%.2f\n", profit);
    return 0;
}

        C 语言没有限制调用一次 printf 可以显示的变量数量。为了同时显示变量 height 和变量 length 的值,可以使用下面的 printf 调用语句:

#include 
int main()
{
    int height = 8,length = 12;
    printf("Height: %d Length: %d\n", height, length);
    return 0;
}

2.4.5 初始化

基本概念:当程序开始执行时,某些变量会被自动设置为零,而大多数变量则不会。没有默认值并且尚未在程序中被赋值的变量是未初始化的

        如果试图访问未初始化的变量(例如,用 printf 显示未初始化变量的值,或者在表达式中使用该未初始化的变量),可能会得到不可预知的结果,如 2568、30891 或者其他同样没有意义的随机数值。在某些编译器中,可能会发生更坏的情况(甚至是程序崩溃)

在同一个声明中可以对任意数量的变量进行初始化:

int height = 8, length = 12, width = 10;
int height, length, width = 10; //height和length未初始化

2.4.6 显示表达式的值

        printf 的功能不局限于显示变量中存储的数,它可以显示任意数值表达式的值。利用这一
特性既可以简化程序,又可以减少变量的数量:
volume = height * length * width;
printf("%d\n", volume);
printf("%d\n", height * length * width);

2.5 读入输入

基本概念:有时程序需要允许用户自行输入一些数值,比如计算x + 1,我们希望x的值是可以由用户自己决定的而不是在程序中固定死的,为了获取输入,就要用到 scanf 函数。

#include 
int main()
{
    int height,length;
    scanf("%d %d", &height,&length);
    printf("Height: %d Length: %d\n", height, length);
    return 0;
}
        字符串"%d"说明 scanf 读入的是一个整数,而height和length是两个 int 型变量,用来存储
scanf读入的 输入。&运算符在这里很难解释清楚,因此现在只说明它在使用 scanf 函数时通常是
(但不总是) 必需的。 读入一个 float 型值时,需要一个形式略有不同的 scanf 调用:
#include 
int main()
{
    float profit;
    scanf("%f", &profit);
    return 0; 
}

        %f 只用于 float 型变量,profit是一个 float 型变量。字符串"%f"告诉 scanf 函数去寻找一个 float 格式的输入值(此数可以含有小数点,但不是必须含有)

2.6 定义常量的名字

基本概念:当程序含有常量时,建议给这些常量命名(采用宏定义的方式)

方式:#define 常量名 常量值

        #define 也是预处理指令。当对程序进行编译时,预处理器会把每一个宏替换为其表示的值:

#include 
#define NUM 166
int main()
{
    weight = (volume + NUM - 1) / NUM;
   //weight = (volume + 166 - 1) / 166;
    return 0;
}
此外,还可以利用宏来定义表达式:
#include 
#define EXPRESSIONS (1.0f / 3.14159f)
int main()
{
    printf("%f",EXPRESSIONS);
    return 0;
}

注意事项:1、当宏包含运算符时,建议用括号把表达式括起来;2、 宏的名字一般均为大写

2.7 标识符

基本概念:在编写程序时,需要对变量、函数、宏和其他实体进行命名。这些名字称为标识符

注意事项:

1、标识符可以含有字母、数字和下划线,但是必须以字母或者下划线开头

合法标识符:times10、get_next_char _done 
非法标识符:10times get-next-char 

2、C 语言区分大小写,即在标识符中 C 语言区分大写字母和小写字母

8个不同的标识符:job joB jOb jOB Job JoB JOb JOB

3、为了避免使用下划线,可以把标识符中的每个单词用大写字母开头(大/小驼峰命名法)

symbolTable、currentPage、nameAndAddress

4、C 对标识符的最大长度没有限制,因此不用担心使用较长的描述性名字

2.7.1 关键字

基本概念:关键字对 C 编译器而言都有着特殊的意义,因此这些关键字不能作为标识符来使用
C语言基本概念_第3张图片
        
        因为 C 语言是区分大小写的,所以程序中出现的关键字必须严格按照表 2-1 所示的那样采用
小写字母。标准库中函数(如 printf)的名字也只能包含小写字母。

2.8 C程序的书写规范

1、语句可以分开放在任意多行内:
printf("Dimensional weight (pounds): %d\n",
(volume + INCHES_PER_POUND - 1) / INCHES_PER_POUND);
2、合理的使用空格可以增强代码的可读性:
volume = height * length * width;

3、缩进有助于轻松识别程序嵌套:

#include 
int main()
{
    int x;
    return 0;
}

4、空行可以把程序划分成逻辑单元,增强代码可读性:

#include

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 0; 
}

注意事项:将字符串分成两行是错误的

printf("To C, or not to C: 
that is the question.\n"); /*** WRONG ***/

~over~

你可能感兴趣的:(C语言-进阶,c++,c语言)