C语言教程 第6页

C语言 常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。 常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 整数常量 整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。 下面列举几个整数常量的实例: 212 /* 合法的 */ 215u /* 合法的 */ 0xFeeL /* 合法的 */ 078 /* 非法的:8 不是八进制的数字 */ 032UU /* 非法的:不能重复后缀 */ 以下是各种类型的整数常量的实例: 85 /* 十进制 */ 0213 /* 八进制 */ 0x4b /* 十六进制 */ 30 /* 整数 */ 30u /* 无符号整数 */ 30l /* 长整数 */ 30ul /* 无符号长整数 */ 浮点常量 浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。 当使用小数形式表示时,必须包含小数点、指数,或同时包含两者。当使用指数形式表示时,必须包含整数部分、小数部分,或同时包含两者。带符号的指数是用 e 或 E 引入的。 下面列举几个浮点常量的实例: 3.14159 /* 合法的 */ 314159E-5L /* 合法的 */ 510E /* 非法的:不完整的指数 */ 210f /* 非法的:没有小数或指数 */ .e55 /* 非法的:缺少整数或分数 */ 字符常量 字符常量是括在单引号中,例如,’x’ 可以存储在 char 类型的简单变量中。 字符常量可以是一个普通的字符(例如 ‘x’)、一个转义序列(例如 ‘\t’),或一个通用的字符(例如 ‘\u02C0’)。 在 C 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等。下表列出了一些这样的转义序列码: 转义序列 含义 \\ \ 字符 \’ ‘ 字符 \” ”...

C语言 变量

变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。 变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C 是大小写敏感的。基于前一章讲解的基本类型,有以下几种基本的变量类型: 类型 描述 char 通常是一个八位字节(一个字节)。这是一个字符类型。 int 对机器而言,整数的最自然的大小。 float 单精度浮点值。 double 双精度浮点值。 void 表示类型的缺失。 C 语言也允许定义各种其他类型的变量,比如枚举、指针、数组、结构、共用体等等,这将会在后续的章节中进行讲解,本章节我们先讲解基本变量类型。 C 中的变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; 在这里,type 必须是一个有效的 C 数据类型,可以是 char、w_char、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明: int i, j, k; char c, ch; float f, salary; double d; 行 int i, j, k; 声明并定义了变量 i、j 和 k,这指示编译器创建类型为 int 的名为 i、j、k 的变量。 变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成,如下所示: type variable_name = value; 下面列举几个实例: extern int d = 3, f = 5; // d 和 f 的声明 int d = 3, f = 5; // 定义并初始化 d 和 f byte z = 22; // 定义并初始化 z char x = 'x'; // 变量 x 的值为 'x' 不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。 C 中的变量声明 变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。 当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。 实例 尝试下面的实例,其中,变量在头部就已经被声明,但它们是在主函数内被定义和初始化的: #include <stdio.h> // 变量声明 extern int...

C语言 数据类型

在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。 C 中的类型可分为以下几种: 序号 类型与描述 1 基本类型: 它们是算术类型,包括两种类型:整数类型和浮点类型。 2 枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。 3 void 类型: 类型说明符 void 表明没有可用的值。 4 派生类型: 它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。 数组类型和结构类型统称为聚合类型。函数的类型指的是函数返回值的类型。在本章节接下来的部分我们将介绍基本类型,其他几种类型会在后边几个章节中进行讲解。 整数类型 下表列出了关于标准整数类型的存储大小和值范围的细节: 类型 存储大小 值范围 char 1 byte -128 到 127 或 0 到 255 unsigned char 1 byte 0 到 255 signed char 1 byte -128 到 127 int 2 或 4 bytes -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 unsigned int 2 或 4 bytes 0 到 65,535 或 0 到 4,294,967,295 short 2 bytes -32,768 到 32,767 unsigned short 2 bytes 0 到 65,535 long 4 bytes -2,147,483,648 到 2,147,483,647 unsigned long 4 bytes 0 到 4,294,967,295 为了得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。下面的实例演示了获取 int 类型的大小: #include <stdio.h> #include <limits.h> int main() { printf("Storage size for...

C语言 程序结构-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

C语言 程序结构

在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考。 C Hello W3Cschool 实例 C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 让我们看一段简单的代码,可以输出单词 “​Hello W3Cschool!​”: #include <stdio.h> int main() { /* 我的第一个 C 程序 */ printf("Hello, W3Cschool! \n"); return 0; } 尝试一下 接下来我们讲解一下上面这段程序: 程序的第一行 ​#include <stdio.h>​ 是预处理器指令,告诉 C 编译器在实际编译之前要包含​ stdio.h​ 文件。 下一行 ​int main()​ 是主函数,程序从这里开始执行。 下一行​ /*...*/​ 将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。 下一行 ​printf(...)​ 是 C 中另一个可用的函数,会在屏幕上显示消息 “​Hello, W3Cschool!​”。 下一行 ​return 0;​ 终止 ​main()​ 函数,并返回值 ​0​。 编译 & 执行 C 程序 接下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤: 打开一个文本编辑器,添加上述代码。 保存文件为 ​hello.c​。 打开命令提示符,进入到保存文件所在的目录。 键入 ​gcc hello.c​,输入回车,编译代码。 如果代码中没有错误,命令提示符会跳到下一行,并生成 ​a.out ​(linux操作系统中) 可执行文件。 现在,键入 ​a.out​ 来执行程序。 您可以看到屏幕上显示 “​Hello W3Cschool​”。 $ gcc hello.c $ ./a.out Hello, W3Cschool! 请确保您的路径中已包含 gcc 编译器,并确保在包含源文件 ​hello.c​ 的目录中运行它。 如果是多个 c 代码的源文件,编译如下: $ gcc test1.c test2.c -o main.out $ ./main.out 在Windows上编译 使用mingw进行编译的,可以参考mingw代码编译。 对于初学者而言,最好的解决方案是直接安装集成开发环境(IDE),C/C++的集成开发环境有很多,其中比较出名的是Visual studio(微软出品,在Windows上如鱼得水,著名的Visual C++6.0,就是visual studio的一部分),codeblock(使用mingw作为编译器,也可使用微软的MSVC)和Dev-C++(一款简单但适合初学者的IDE)。这些集成开发环境提供了编译,链接等功能,还提供了debug的功能(还有很多功能,这里不一一细说了)。这些对于开发而言都是相当重要的。以编译为例,VS2019(visual studio)提供了一个运行的按钮,点击直接就可以一步编译运行源代码。...

C语言 环境设置

本地环境设置 如果您想要设置 C 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C 编译器。 文本编辑器 这将用于输入您的程序。文本编辑器包括 Windows Notepad(不推荐)、OS Edit command、Brief、Epsilon、EMACS 、sublime、vscode(推荐)和 vim/vi。 文本编辑器的名称和版本在不同的操作系统上可能会有所不同。例如,Notepad 通常用于 Windows 操作系统上,vim/vi 可用于 Windows 和 Linux/UNIX 操作系统上。  vscode拥有多平台支持,Windows,linux和mac都可以找到对应的安装包。 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。C 程序的源文件通常使用扩展名 “.c“。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 C 编译器 写在源文件中的源代码是人类可读的。它需要”编译”,转为机器语言,这样 CPU 才可以按给定指令执行程序。 C 语言编译器用于把源代码编译成最终的可执行程序。这里假设您已经对编程语言的编译器有基本的了解了。 最常用的免费可用的编译器是 GNU 的 C/C++ 编译器,如果您使用的是 HP 或 Solaris,则可以使用各自操作系统上的编译器。 以下部分将指导您如何在不同的操作系统上安装 GNU 的 C/C++ 编译器。这里同时提到 C/C++,主要是因为 GNU 的 gcc 编译器适合于 C 和 C++ 编程语言。 UNIX/Linux 上的安装 如果您使用的是 Linux 或 UNIX,请在命令行使用下面的命令来检查您的系统上是否安装了 GCC: $ gcc -v 如果您的计算机上已经安装了 GNU 编译器,则会显示如下消息: Using built-in specs. Target: i386-redhat-linux Configured with: ../configure --prefix=/usr ....... Thread model: posix gcc version 4.1.2 20080704 (Red Hat 4.1.2-46) 如果未安装 GCC,那么请按照 http://gcc.gnu.org/install/ 上的详细说明安装 GCC。 本教程是基于 Linux 编写的,所有给定的实例都已在 Cent OS Linux 系统上编译过。  本教程也经过检查,所给实例在Windows下也能编译成功。 Mac OS 上的安装 如果您使用的是 Mac OS X,最快捷的获取 GCC 的方法是从苹果的网站上下载 Xcode 开发环境,并按照安装说明进行安装。一旦安装上 Xcode,您就能使用 GNU 编译器。 Xcode 目前可从 developer.apple.com/technologies/tools/...

C语言 简介

C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。 在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一个公开可用的描述,现在被称为 K&R 标准。 UNIX 操作系统,C编译器,和几乎所有的 UNIX 应用程序都是用 C 语言编写的。由于各种原因,C 语言现在已经成为一种广泛使用的专业语言。 易于学习。 结构化语言。 它产生高效率的程序。 它可以处理底层的活动。 它可以在多种计算机平台上编译。 关于 C C 语言是为了编写 UNIX 操作系统而被发明的。 C 语言是以 B 语言为基础的,B 语言大概是在 1970 年被引进的。 C 语言标准是于 1988 年由美国国家标准协会(ANSI,全称 American National Standard Institute)制定的。 截至 1973 年,UNIX 操作系统完全使用 C 语言编写。 目前,C 语言是最广泛使用的系统程序设计语言。 大多数先进的软件都是使用 C 语言实现的。 当今最流行的 Linux 操作系统和 RDBMS MySQL 都是使用 C 语言编写的。 为什么要使用 C? C 语言最初是用于系统开发工作,特别是组成操作系统的程序。由于 C 语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样,所以采用 C 语言作为系统开发语言。下面列举几个使用 C 的实例: 操作系统 语言编译器 汇编器 文本编辑器 后台打印服务(Print Spooler) 网络驱动器 现代程序 数据库 语言解释器 实体工具 C 程序 一个 C 语言程序,可以是 3 行,也可以是数百万行,它可以写在一个或多个扩展名为 “​.c​” 的文本文件中,例如,​hello.c​。您可以使用 “vi”、“vim” 或任何其他文本编辑器来编写您的 C 语言程序。 本教程假定您已经知道如何编辑一个文本文件,以及如何在程序文件中编写源代码。  实际上任何一款代码(文本)编辑器都可以编写C语言代码(只要它可以保存.c文件),比如VSCode,sublime,atom,vim等。但并不推荐使用记事本这种工具,可能会出现一些未知的错误,前面提到的代码编辑工具是经过实践后可以使用的。 另外,c语言程序的后缀还有可能是​.h​和​.cpp​,前者是c语言的头文件(比如​stdio.h​),后者是C++(可以认为是C语言的超集)的代码文件(也可以用在C语言的学习上)。

C 指针的算术运算-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

C 指针的算术运算

C 指针的算术运算 C 指针 C 指针是一个用数值表示的地址。因此,您可以对指针执行算术运算。可以对指针进行四种算术运算:++、–、+、-。 假设 ptr 是一个指向地址 1000 的整型指针,是一个 32 位的整数,让我们对该指针执行下列的算术运算: ptr++ 在执行完上述的运算之后,ptr 将指向位置 1004,因为 ptr 每增加一次,它都将指向下一个整数位置,即当前位置往后移 4 个字节。这个运算会在不影响内存位置中实际值的情况下,移动指针到下一个内存位置。如果 ptr 指向一个地址为 1000 的字符,上面的运算会导致指针指向位置 1001,因为下一个字符位置是在 1001。 递增一个指针 我们喜欢在程序中使用指针代替数组,因为变量指针可以递增,而数组不能递增,数组可以看成一个指针常量。下面的程序递增变量指针,以便顺序访问数组中的每一个元素: #include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr; /* 指针中的数组地址 */ ptr = var; for ( i = 0; i < MAX; i++) { printf("Address of var[%d] = %x\n", i, ptr ); printf("Value of var[%d] = %d\n", i, *ptr ); /* 移动到下一个位置 */ ptr++; } return 0; } 当上面的代码被编译和执行时,它会产生下列结果: Address of var[0] = bf882b30 Value of var[0] = 10 Address of var[1] = bf882b34 Value of var[1] = 100 Address of var[2] = bf882b38 Value of var[2] = 200...

Windows安装MinGW和简单的使用教程-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Windows安装MinGW和简单的使用教程

什么是MinGW? MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能(该段内容来自百度百科)。  MinGW-w64是MinGW的64位版本,MinGW在多年前就已经将开发精力转移到64位系统上了,32位MinGW多年未曾更新了。以下的安装过程都建立在64位系统的基础上进行。 如何下载 可以前往MinGW的官网进行下载:https://www.mingw-w64.org/downloads/ MinGW将其托管到sourceforge上了,也可以前往sourceforge下载:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/?tdsourcetag=s_pctim_aiomsg  在sourceforge上下载的话选择install.exe文件下载即可,小编接下来采用的就是这种方式。使用可执行安装文件进行安装对新手来说比较友好。也可以采用免安装的形式来下载安装MinGW。最后,如果使用带MinGW的codeblock,可以直接跳到环境变量配置过程。 如何安装 安装器安装 下载完install.exe文件后运行该软件,进入如下页面: 点击next进入安装配置; 选择安装的MinGW版本号,没有特殊要求的话(如果只是为了学习)直接安装最新版本即可: 选择系统架构,X86_64是64位系统,i686是32位系统。 选择操作系统接口协议:开发类Unix(linux,macOS,Unix等)系统的程序选择posix,开发Windows程序的选择win32即可。 选择异常处理类型:异常处理在开发中非常重要,在开发的过程中,大部分的时间会耗在处理各种异常情况上。seh 是新发明的,而 sjlj 则是古老的。seh 性能比较好,但不支持 32位。 sjlj 稳定性好,支持 32位。建议64位操作系统选择seh。 选择安装路径,点击next即可进入安装过程(需要联网下载MinGW的相应数据)。 安装完成后可以到相应的安装路径下看到这样的文件夹: 免安装版本 我们可以直接下载相应的MinGW的压缩包,解压也可得到上面安装后的文件夹。以上述的安装版本为例,我们要选择的安装版本如下图所示: 环境变量配置 安装完MinGW后需要进行环境变量的配置,在环境变量中的path变量中添加上面文件夹内的bin文件夹即可: 校验 在命令提示符中输入​gcc-v​或者​g++ -v​,如果有输出内容,则证明配置成功。 简易使用 编辑代码 使用记事本或者代码编辑器写一段程序(这里不推荐使用记事本,小编使用vscode)。 首先通过命令行进入你准备要创建文件的目录下进行后续操作。 编译过程 编译过程分为四个步骤:预处理、编译、汇编、链接。 1.预处理 预处理主要处理源文件中的“#include”、“#define”等预处理命令。 预处理主要完成的工作有: (1)删除#define,展开宏; (2)处理条件编译指令,预处理程序先判断条件,在根据条件修改源代码; (3)删除注释; (4)添加行号,以及文件名标识,便于调试 (5)删除“#include”,插入相应的头文件; 使用​g++ -E test.cpp -o test.i​​命令,预处理后得到​test.i​文件 2.编译 生成汇编代码的过程,使用命令​g++ -S test.i -o test.s.​生成汇编文件​test.s​文件,当然直接从​test.cpp​文件得到汇编文件也可以。 3.汇编 将汇编代码转化成机器指令,生成目标二进制代码。 使用命令​g++ -c test.s -o test.o​生成​test.o​文件 4.链接 通过链接库文件,将目标文件转化成可执行文件 使用命令​g++ test.o -o test.exe​ 当然,一般情况下,可以直接使用​g++ test.cpp -o test​ 就可以生成可执行程序了。 运行程序 最后使用命令test.exe,即可运行程序。 也可以直接点击exe文件进行运行。

C 库宏 – errno-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

C 库宏 – errno

C 库宏 – errno C 标准库 – <errno.h> 描述 C 库宏 extern int errno 是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。 声明 下面是 errno 宏的声明。 extern int errno 参数 NA 返回值 NA 实例 下面的实例演示了 errno 宏的用法。 #include <stdio.h> #include <errno.h> #include <string.h> extern int errno ; int main () { FILE *fp; fp = fopen("file.txt", "r"); if( fp == NULL ) { fprintf(stderr, "Value of errno: %d\n", errno); fprintf(stderr, "Error opening file: %s\n", strerror(errno)); } else { fclose(fp); } return(0); } 让我们编译并运行上面的程序,当文件 file.txt 不存在时,将产生以下结果: Value of errno: 2 Error opening file: No such file or directory C 标准库 – <errno.h>

代码编译(使用mingw)-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

代码编译(使用mingw)

编辑代码 使用记事本或者代码编辑器写一段程序(这里不推荐使用记事本,本文使用vscode进行代码编写)。 首先通过命令行进入你准备要创建文件的目录下进行后续操作。 编译过程 编译过程分为四个步骤:预处理、编译、汇编、链接。 1.预处理 预处理主要处理源文件中的“#include”、“#define”等预处理命令。 预处理主要完成的工作有: (1)删除#define,展开宏; (2)处理条件编译指令,预处理程序先判断条件,在根据条件修改源代码; (3)删除注释; (4)添加行号,以及文件名标识,便于调试; (5)删除“#include”,插入相应的头文件; 使用​​g++ -E test.cpp -o test.i​​​命令,预处理后得到​​test.i​​文件 2.编译 生成汇编代码的过程,使用命令​​g++ -S test.i -o test.s.​​生成汇编文件​​test.s​​文件,当然直接从​​test.cpp​​文件得到汇编文件也可以。 3.汇编 将汇编代码转化成机器指令,生成目标二进制代码。 使用命令​​g++ -c test.s -o test.o​​生成​​test.o​​文件 4.链接 通过链接库文件,将目标文件转化成可执行文件 使用命令​​g++ test.o -o test.exe​​ 另一种更常见的编译方式 当然,一般情况下,可以直接使用​​g++ test.cpp -o test​​ 就可以生成可执行程序了。 运行程序 最后使用命令​test.exe​,即可运行程序。 也可以直接点击exe文件进行运行。