C语言关键字综述

2024-08-28 03:32
文章标签 语言 关键字 综述

本文主要是介绍C语言关键字综述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ANSI C标准C语言共有32个关键字,如下:

auto

breakcasecharconstcontinue

default

do
doubleelseenumextern

float

forgotoif
intlongregisterreturnshortsignedsizeofstatic
structswitchtypedefunionunsigned

void

volatile

while

1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字:

inlinerestrict_Bool_Complex_Imaginary

2011年12月8日,ISO发布C语言的新标准C11,该标准新增了7个C语言关键字:

_Alignas_Alignof_Atomic_Static_assert_Noreturn_Thread_local_Generic

目前一般用的C语言都是ANSI C标准,部分编译器支持C99标准。注意,C语言的关键字是区分大小写的。编程鸟在其博客C语言关键字解析中,对这些关键字进行了分类,在此借鉴一下,我按照此分类对ANSI C标准的C语言关键字做简要介绍。

第一类,有关数据“模子”的关键字:void、char、short、int、long、float、double、sizeof;
第二类,有关数据符号的关键字:signed、unsigned;
第三类,构造类型:struct、union、enum、typedef;
第四类,有关存储与生命周期的类型:auto、static、extern、register、const、volatile;
第五类,有关语句的类型:if、else、for、while、do、switch、case、default、goto、break、continue、return

C语言关键字
数据类型void声明函数无返回值或无参数,声明无类型指针  
char声明字符型变量或函数  
short声明短整型变量或函数
int声明整型变量或函数
long声明长整型变量或函数 
float声明浮点型变量或函数
double声明双精度变量或函数
sizeof计算数据类型长度
数据符号signed声明有符号类型变量或函数
unsigned声明无符号类型变量或函数

构造类型

struct声明结构体变量或函数
union声明共用数据类型
enum声明枚举类型
typedef用以给数据类型取别名
有关存储与生命周期的类型auto声明自动变量
static声明静态变量
extern声明变量是在其他文件
register声明寄存器变量
const声明只读变量
volatile说明变量在程序执行中可被隐含地改变
有关语句的类型if条件语句
else条件语句否定分支(与 if 连用)
for一种循环语句
while循环语句的循环条件
do循环语句的循环体
switch用于开关语句
case开关语句分支
default开关语句中的“其他”分支
goto无条件跳转语句
break跳出当前循环
continue结束当前循环,开始下一轮循环
return子程序返回语句(可以带参数,也可不带参数)循环条件

关键字的大概说明如上表所示。本文不对每一个关键字做详细介绍,个人认为数据类型、符号类型和有关语句的类型不是难点,本文从这3个类型中选几个可能出错的稍作展开。

数据类型和数据符号

数据类型是最基本的关键字,表示一个变量的类型。不同的类型所占的字节大小不同,我用VS2010验证如下:

        int i;unsigned int ii;char c;short sh;double dou;float f;long l;long int li;long long int lli;char str1[]={"abcde"};char str2[]={'a','b','c','d','e'};char str3[5]={"abcde"};printf("length of int: %d\r\n",sizeof(i));printf("length of unsigned int: %d\r\n",sizeof(ii));printf("length of char: %d\r\n",sizeof(c));printf("length of short: %d\r\n",sizeof(sh));printf("length of double: %d\r\n",sizeof(dou));printf("length of float: %d\r\n",sizeof(f));printf("length of long: %d\r\n",sizeof(l));printf("length of long int: %d\r\n",sizeof(li));printf("length of long long int: %d\r\n",sizeof(lli));printf("length of str1: %d\r\n",sizeof(str1));printf("length of str2: %d\r\n",sizeof(str2));printf("length of str3: %d\r\n",sizeof(str3));

这里注意sizeof是用来计算变量所占空间大小,单位为字节。输出结果如下:

数据类型和数据符号配合使用,C语言默认类型都是有符号的,只有前面用unsigned修饰,才表示无符号类型。

不同的系统数据类型的长度是不一样的,我的VS2010是32位系统的。32位系统和64位系统比较如下(表格中长度单位是比特):

I表示:int类型
L表示:long类型
P表示:pointer指针类型
32表示32位系统
64表示64位系统

字符串长度

上面的例子中对字符串进行了简单表示。可以发现str1、str2、str3长度是不一样的。

像str1这样不指定数组长度,直接用双引号赋值,除了正常的字符串外,在字符串最后,系统会默认加一个‘\0’,表示结束。所以str1的长度就是6字节;

像str2这样虽不指定数组长度,但是用单引号赋值,数据长度就是实际字符个数。所以str2长度就是5字节;

像str3这样指定数据长度,用双引号赋值,sizsof显示长度是数组指定的长度,也就是5字节。

构造类型和有关存储于生命周期的类型

构造类型和有关存储于生命周期的类型,将另写专题文章进行讲解,这两个类型的每一个关键字都比较重要,且展开讲解也需要大量篇幅。了解详细介绍,点击下面链接即可。

C语言关键字之static

C语言关键字之extern

C语言关键字之register

C语言关键字之const

C语言关键字之volatile

C语言关键字之struct

C语言关键字之union

C语言关键字之enum

C语言关键字之typedef

 

参考文献:

[1]https://blog.csdn.net/m0_38121874/article/details/82535129

这篇关于C语言关键字综述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113607

相关文章

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当