C语言专栏
一、C语言程序结构
在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的文章中可以以此作为参考。
1、C语言 Hello World 实例
C 程序主要包括以下部分:
- 预处理器指令
- 函数
- 变量
- 语句 & 表达式
- 注释
让我们看一段简单的代码,可以输出单词 “Hello World”:
实例:
#include <stdio.h>
int main()
{
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}
接下来我们讲解一下上面这段程序:
1.程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
2.下一行 int main() 是主函数,程序从这里开始执行。
3.下一行 /*...*/
将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
4.下一行 printf(…) 是 C 中另一个可用的函数,会在屏幕上显示消息 “Hello, World!”。
5.下一行 return 0; 终止 main() 函数,并返回值 0。
2、编译 & 执行 C 程序
接下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤:
(1)打开一个文本编辑器,添加上述代码。
(2)保存文件为 hello.c。
(3)打开命令提示符,进入到保存文件所在的目录。
(4)键入 gcc hello.c,输入回车,编译代码。
(5)如果代码中没有错误,命令提示符会跳到下一行,并生成 a.out 可执行文件。
(6)现在,键入 a.out 来执行程序。
(7)您可以看到屏幕上显示 “Hello World”。
二、C语言基本语法
1、C的令牌(Token)
C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个令牌:
printf("Hello, World! \n");
这五个令牌分别是:
printf
(
"Hello, World! \n"
)
;
2、分号;
在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
例如,下面是两个不同的语句:
printf("Hello, World! \n");
return 0;
3、注释
C 语言有两种注释方式:
// 单行注释
以 // 开始的单行注释,这种注释可以单独占一行。
/* 单行注释 */
/*
多行注释
多行注释
多行注释
*/
/* */ 这种格式的注释可以单行或多行。
不能在注释内嵌套注释,注释也不能出现在字符串或字符值中。
4、标识符
C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。
C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。因此,在 C 中,Manpower 和 manpower 是两个不同的标识符。下面列出几个有效的标识符:
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
5、关键字
下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。
6、C 中的空格
只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。
在 C 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:
int age;
在这里,int 和 age 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:
fruit = apples + oranges; // 获取水果的总数
fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。
三、C语言数据类
在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
C 中的类型可分为以下几种:
数组类型和结构类型统称为聚合类型。函数的类型指的是函数返回值的类型。在本章节接下来的部分我们将介绍基本类型,其他几种类型会在后边几个章节中进行讲解。
1、整数类型
下表列出了关于标准整数类型的存储大小和值范围的细节:
注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。
以下列出了32位系统与64位系统的存储大小的差别(windows 相同):
为了得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。下面的实例演示了获取 int 类型的大小:
实例:
#include <stdio.h>
#include <limits.h>
int main()
{
printf("int 存储大小 : %lu \n", sizeof(int));
return 0;
}
%lu 为 32 位无符号整数。
当您在 Linux 上编译并执行上面的程序时,它会产生下列结果:
int 存储大小 : 4
2、浮点类型
下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:
头文件 float.h 定义了宏,在程序中可以使用这些值和其他有关实数二进制表示的细节。下面的实例将输出浮点类型占用的存储空间以及它的范围值:
实例:
#include <stdio.h>
#include <float.h>
int main()
{
printf("float 存储最大字节数 : %lu \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
return 0;
}
%E 为以指数形式输出单、双精度实数。
当您在 Linux 上编译并执行上面的程序时,它会产生下列结果:
float 存储最大字节数 : 4
float 最小值: 1.175494E-38
float 最大值: 3.402823E+38
精度值: 6
3、void 类型
void 类型指定没有可用的值。它通常用于以下三种情况下:
附:
常用基本数据类型占用空间(64位机器为例)
char : 1个字节
int :4个字节
float:4个字节
double:8个字节
基本类型书写
整数
- a,默认为10进制 ,10 ,20。
- b,以0开头为8进制,045,021。
- c,以0b开头为2进制,0b11101101。
- d,以0x开头为16进制,0x21458adf。
小数
- 单精度常量:2.3f 。
- 双精度常量:2.3,默认为双精度。
字符型常量
- 用英文单引号括起来,只保存一个字符’a’、‘b’ 、‘*’ ,还有转义字符 ‘\n’ 、‘\t’。
字符串常量
- 用英文的双引号引起来 可以保存多个字符:“abc”。
1、数据类型转换:C 语言中如果一个表达式中含有不同类型的常量和变量,在计算时,会将它们自动转换为同一种类型;在 C 语言中也可以对数据类型进行强制转换;
2、自动转换规则:
- a)浮点数赋给整型,该浮点数小数被舍去;
- b)整数赋给浮点型,数值不变,但是被存储到相应的浮点型变量中;
3、强制类型转换形式: (类型说明符)(表达式)
实例程序:
#include<stdio.h>
int main()
{
float f,x=3.6,y=5.2;
int i=4,a,b;
a=x+y;
b=(int)(x+y);
f=10/i;
printf("a=%d,b=%d,f=%f,x=%f\n",a,b,f,x);
}
例子中先计算 x+y 值为 8.8,然后赋值给 a,因为a为整型,所以自取整数部分8,a=8;接下来 b 把 x+y 强制转换为整型;最后 10/i 是两个整数相除,结果仍为整数 2,把 2 赋给浮点数 f;x 为浮点型直接输出。
推荐:
给新学C语言的朋友一些建议:一边学一边敲,敲着敲着就会啦。推荐学习网站:菜鸟教程,学完之后一定要多练习练习,推荐网站:Dotcpp(C语言网)。
结束语
希望C语言专栏会对大家有帮助,也希望大家在编程的道路上越走越远,早日成为IT届大佬!!!
后续将持续更新,大家的支持就是我创作的动力!!!