【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届大佬!!!
后续将持续更新,大家的支持就是我创作的动力!!!
在这里插入图片描述

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小园园子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值