C 基本语法

简介: C 的令牌(Token)分号 ;注释标识符关键字C99 新增关键字C11 新增关键字C 中的空格

我们已经看过 C 程序的基本结构,这将有助于我们理解 C 语言的其他基本的构建块。


微信图片_20220520144444.png


C 的令牌(Token)


       C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个令牌:

这五个令牌分别是:


printf
(
"Hello, 帅次! %d",x
)
;


分号 ;


       在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。

样例:


int x;
printf("Hello, 帅次! %d",x);
return 0;


注释


       C 语言有两种注释方式:


// 单行注释


以//开始的单行注释,这种注释可以单独占一行。


/* 单行注释 */
/*
 多行注释
 多行注释
 多行注释
 */


   /* */ 这种格式的注释可以单行或多行。


       你不能在注释内嵌套注释,注释也不能出现在 字符串 或字符值中。


标识符


       1、C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。


       2、C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。因此,在 C 中,Manpower 和 manpower 是两个不同的标识符。


       3、C 标识不能将关键字用作标识符。


       4、C 标识符的长度没有指定。但是,如果标识符超过31个字符,则在某些编译器中可能会遇到问题。


       如果遵循上述规则,则可以选择任何名称作为标识符,但是,建议有意义的标识符指定有意义的变量名称。下面列出几个有效的标识符:


mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal


关键字


下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。


关键字

说明

auto

声明自动变量

break

跳出当前循环

case

开关语句分支

char

声明字符型变量或函数返回值类型

const

定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变

continue

结束当前循环,开始下一轮循环

default

开关语句中的"其它"分支

do

循环语句的循环体

double

声明双精度浮点型变量或函数返回值类型

else

条件语句否定分支(与 if 连用)

enum

声明枚举类型

extern

声明变量或函数是在其它文件或本文件的其他位置定义

float

声明浮点型变量或函数返回值类型

for

一种循环语句

goto

无条件跳转语句

if

条件语句

int

声明整型变量或函数

long

声明长整型变量或函数返回值类型

register

声明寄存器变量

return

子程序返回语句(可以带参数,也可不带参数)

short

声明短整型变量或函数

signed

声明有符号类型变量或函数

sizeof

计算数据类型或变量长度(即所占字节数)

static

声明静态变量

struct

声明结构体类型

switch

用于开关语句

typedef

用以给数据类型取别名

unsigned

声明无符号类型变量或函数

union

声明共用体类型

void

声明函数无返回值或无参数,声明无类型指针

volatile

说明变量在程序执行中可被隐含地改变

while

循环语句的循环条件


C99 新增关键字


_Bool 、_Complex 、_Imaginary、inline、restrict


C11 新增关键字


_Alignas、_Alignof、_Atomic、_Generic、_Noreturn、_Static_assert 、_Thread_local


C 中的空格


只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。


在 C 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:


int age;


在这里,int 和 age 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:


fruit = apples + oranges;// 获取水果的总数


fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。


由于我也是初学者,所以以上内容可能存在分歧,我们可以共同探讨,不要轻易质疑自己。

相关文章
|
JSON 物联网 数据格式
HTTP协议接入物联网平台(Getman模拟)
本文将使用Getman模拟设备模拟HTTP请求,进行接入测试
HTTP协议接入物联网平台(Getman模拟)
|
机器学习/深度学习 自然语言处理 算法
生成对抗网络是如何工作的
【10月更文挑战第14天】生成对抗网络是如何工作的
|
JavaScript Java 关系型数据库
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)(1)
基于SpringBoot+Vue华强北商城二手手机管理系统(源码+部署说明+演示视频+源码介绍+lw)
425 1
|
设计模式 算法 Java
Java中的设计模式:实战案例分享
Java中的设计模式:实战案例分享
|
机器学习/深度学习 人工智能 算法
|
算法 Java Linux
注意!不看太后悔了!未来工作中如何多人协作?让我用git给你演示!
目前,我们的仓库中只有一个 master 主分支,但在实际的项目开发中,在任何情况下其实都是不允许直接在 master 分支上修改代码的,这是为了保证主分支的稳定。这时推送失败,因为你的小伙伴的最新提交和你推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用 git pull 把最新的提交从origin/dev 抓下来,然后,在本地进行合并,并解决冲。要说明的是,我们切换到的是本地的 dev 分支,根据示例中的操作,会将本地分支和远程分支的进行关系链接。冲突,就使用我们之前讲的冲突处理解决掉冲突。
354 0
|
监控 Linux 定位技术
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十八)串口编程(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十八)串口编程
659 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十八)串口编程(下)
|
JavaScript
layui的totalRow默认为两位小数,按需要修改为整数
layui的totalRow默认为两位小数,按需要修改为整数
1029 0
|
机器学习/深度学习 传感器 开发框架
【TSP问题】基于遗传算法求解固定的开放式不返回多旅行推销员问题(M-TSP)附matlab代码
【TSP问题】基于遗传算法求解固定的开放式不返回多旅行推销员问题(M-TSP)附matlab代码
|
算法 5G
基于导频的信道估计实现
基于导频的信道估计实现
1013 0
基于导频的信道估计实现

热门文章

最新文章