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

2.1.1 编译和链接

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

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

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

 

        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> 表明,在编译器编译前把会头文件“stdio.h”中的信息“包含”到
程序中(<stdio.h>包含 C 标准输入/输出库的信息,C 语言拥有大量类似于 <stdio.h>的头文
件,每个头都包含一些标准库的内容)  我们所编写的每一段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、将一些

你不需要的内容隐藏起来

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

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

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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
int main()
{
    float profit = 2150.48f;
    printf("Profit: $%.2f\n", profit);
    return 0;
}

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

#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
int main()
{
    float profit;
    scanf("%f", &profit);
    return 0; 
}

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

2.6 定义常量的名字

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

方式:#define 常量名 常量值

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

#include <stdio.h>
#define NUM 166
int main()
{
    weight = (volume + NUM - 1) / NUM;
   //weight = (volume + 166 - 1) / 166;
    return 0;
}
此外,还可以利用宏来定义表达式:
#include <stdio.h>
#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 语言是区分大小写的,所以程序中出现的关键字必须严格按照表 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 <stdio.h>
int main()
{
    int x;
    return 0;
}

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

#include<stdio.h>

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~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/349269.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7款值得去尝试的前端动画特效(附效果图及在线演示)

分享7款好玩的前端动画特效 其中有CSS动画、canvas动画、js小游戏等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 橙汁粒子特效 一款基于canvas实现的粒子动画特效 点击杯子 杯子上方会有橙子掉落至杯中并变为橙…

如何做标准化?| 京东云技术团队

在现代信息化的市场环境和社会中&#xff0c;标准化已经成为了各种行业的一个重要的标志。标准化不仅可以提升生产效率&#xff0c;减轻质量问题&#xff0c;还可以增加产品的可靠性和互通性。在这篇文章中&#xff0c;我们将探讨如何做标准化&#xff0c;为您提供详细的指导和…

深入理解Java类和对象的关系

如果要说清楚对象和类的关系&#xff0c;不可避免的要提到C&#xff0c;因为Java从时间线上来说&#xff0c;是C和C之后的一门语言&#xff0c;很多Java Coder 也是因为厌烦了C的一些特性&#xff0c;进而从事于Java开发的&#xff0c;所以以下内容会利用C的一部分知识来对比&a…

Mac+Android Studio配置 Flutter环境

Fluttrer中文下载官网 Flutter下载官网 1、环境变量 .zshrc #Flutter export PUB_HOSTED_URL"https://pub.flutter-io.cn" export FLUTTER_STORAGE_BASE_URL"https://storage.flutter-io.cn" export FLUTTER_HOME/Users/leon/Flutter/flutter_3_10_4/f…

【C/C++】C/C++编程——第一个 C++ 程序:HelloWorld

第一个 C 程序&#xff1a;HelloWorld 大家好&#xff0c;我是 shopeeai&#xff0c;也可以叫我虾皮&#xff0c;中科大菜鸟研究生。昨天我们成功搭建好了 C 的开发环境&#xff0c;今天我们来介绍一下第一个 C 程序,打印一个"hello world"。首先我们先贴一下示例代…

Linux(linux版本 centos 7) 下安装 oracle 19c详细教程(新手小白易上手)

一、安装前准备 1、下载预安装包 wget http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm预安装包下载成功 2、下载oracle安装包 下载地址如下 https://www.oracle.com/cn/database/technologies…

Python 正则分割字符串并提取匹配的记号和关键词

需求是&#xff1a;原字符串内含有特殊记号&#xff0c;比如"V_{CC} V_{DD}"&#xff0c;其中_{CC} 是latex 的下标语法&#xff0c;实际显示出来是下面这样&#xff1a; V C C V D D V_{CC} V_{DD} VCC​VDD​ 现在要把下标部分提取出来&#xff0c;并把原字符串…

Python之数据可视化基础

目录 一 JSON数据格式转换 二 pyecharts模块 三 Pyecharts入门 四 数据可视化之疫情折线图 一 JSON数据格式转换 什么是JSON? JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式。它以易于阅读和编写的方式来表示结构化数据。JSO…

构建未来学堂:在线教育系统开发技术实践

在当今数字化时代&#xff0c;在线教育系统的开发越发显得至关重要。本文将带你深入了解在线教育系统的开发&#xff0c;涉及到关键的技术实践和代码示例。我们将采用现代化技术栈&#xff0c;为未来学堂的搭建提供实用的指南。 技术栈选择 在开始实际的开发之前&#xff0c…

在IDEA中创建SpringBoot项目

概述 SpringBoot是由Pivotal团队提供的全新的框架&#xff0c;其设计的目的是用来简化Spring应用的初始搭建以及开发过程。 传统方式构建Spring应用程序 导入依赖繁琐 依赖冲突 项目配置繁琐 SpringBoot特性 1、起步依赖 本质上就行一个Maven坐标&#xff0c;整合了完成一…

虚幻UE 插件-像素流送实现和优化

本笔记记录了像素流送插件的实现和优化过程。 UE version&#xff1a;5.3 文章目录 一、像素流送二、实现步骤1、开启像素流送插件2、设置参数3、打包程序4、打包后的程序进行像素流参数设置5、下载NodeJS6、下载信令服务器7、对信令服务器进行设置8、启动像素流送 三、优化1、…

机电制造ERP软件有哪些品牌?哪家的机电制造ERP系统比较好

机电制造过程比较复杂&#xff0c;涵盖零配件、采购、图纸设计、工艺派工、生产计划、物料需求计划、委外加工等诸多环节。而供应链涉及供应商的选择、材料采购价格波动分析、材料交货、品质检验等过程&#xff0c;其中某个环节出现问题都可能会影响产品交期和经营效益。 近些…

设计模式_组合模式_Composite

案例引入 学校院系展示 编写程序展示一个学校院系结构: 需求是这样&#xff0c;要在一个页面中展示出学校的院系组成&#xff0c;一个学校有多个学院&#xff0c;一个学院有多个系 【传统方式】 将学院看做是学校的子类&#xff0c;系是学院的子类&#xff0c;小的组织继承大…

第2章 信息技术发展——2.1 信息技术及其发展

文章目录 2.1 信息技术及其发展2.1.1 计算机软硬件2.1.2 计算机网络1.网络标准协议1)OSI2)IEEE802协议族3)TCP/IP 2.软件定义网络3.第五代移动通信技术 2.1.3 存储和数据库1.存储技术2.数据结构模型1)层次模型2)网状模型3)关系模型 3.常用数据库类型1)关系型数据库2)非关系型数…

Docker镜像的创建

基于现有镜像创建 先用现有镜像创建启动容器 docker run 再进入容器进行内容更新 docker exec -it 最后提交成新的镜像 docker commit 然后将修改后的容器提交为新的镜像&#xff0c;需要使用该容器的 ID 号创建新镜像 进入容器可查看相关性能 基于本地模板创…

【软考上岸-备考系统集成项目管理工程师1】

文章目录 今日座右铭&#xff1a;最好的偷懒方式&#xff0c;就是一次做好。 文章目录 文章目录前言一、系统集成项目管理工程师作用二、系统集成项目管理工程师报名要求三、软考报名流程四、教材参考说明总结 前言 计算机信息系统集成项目管理师对应资格考试名称&#xff1a;…

FPGA高端项目:Xilinx Zynq7020系列FPGA多路视频拼接 工程解决方案 提供6套工程源码和技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我已有的FPGA视频拼接叠加融合方案本方案在Xilinx Kintex7 系列FPGA上的应用本方案在Xilinx Artix7 系列FPGA上的应用 3、设计思路框架视频源选择ov5640 i2c配置及采集动态彩条多路视频…

k8s学习(RKE+k8s+rancher2.x)成长系列之概念介绍(一)

一、前言 本文使用国内大多数中小型企业使用的RKE搭建K8s并拉起高可用Rancher2.x的搭建方式&#xff0c;以相关技术概念为起点&#xff0c;实际环境搭建&#xff0c;程序部署为终点&#xff0c;从0到1的实操演示的学习方式&#xff0c;一步一步&#xff0c;保姆级的方式学习k8…

语音生成、写作增强、论文辅助、英文学习,AI原生应用精彩推荐一箩筐!

崭新的2024年已然降临&#xff0c;飞桨星河社区再次涌现出诸多精彩纷呈的AI原生应用&#xff0c;快来一同探索&#xff0c;发现这些应用带来的无限惊喜与可能吧&#xff01; 语音生成&#xff1a;10音色自由选择 应用介绍 本应用基于ERNIE SDK和语音合成工具&#xff0c;可以输…

“情暖寒冬 温暖相伴”关爱慰问

岁末寒冬&#xff0c;春节将至&#xff0c;为持续巩固脱贫攻坚成果&#xff0c;扎实助力乡村振兴&#xff0c;市融媒体中心开展“情暖寒冬 温暖相伴”慰问活动。 1月25市融媒体中心联合我市志愿者协会在南村镇忽树庄村开展“情暖寒冬 温暖相伴”慰问活动&#xff0c;为脱贫户送…