当前位置: 首页 > news >正文

【C语言】关键字详解

【C语言】关键字详解


文章目录

    • @[TOC](文章目录)
  • 前言
  • 一、char
    • 1.定义字符串类型
    • 2.定义字符类型
  • 二、short
  • 三、int
  • 四、long
  • 五、signed
  • 六、unsigned
  • 七、float
  • 八、double
  • 九、struct、union、enum
  • 十、void
    • 1.void用于函数声明,没有返回值的函数,其类型为 void。
    • 2.void不能用来声明变量或常量
    • 3.void是没有返回值的,在void函数里面不能使用return来返回数据。
  • 十一、for
    • 1.省略变量初始化
    • 2.省略循环条件
    • 3.省略变量更新
    • 4.三个都省略
  • 十二、do while
  • 十三、while
  • 十四、break
  • 十五、continue
  • 十五、if else
  • 十六、goto
    • 1.goto从上到下
    • 2.goto从下到上
  • 十七、switch case default
  • 十八、return
  • 十九、auto
  • 二十、extern
  • 二十一、register
  • 二十二、static
  • 二十三、typedef
    • 1.对整形重命名
    • 2.对数组重命名
    • 3.对指针重命名
  • 二十四、const
  • 二十五、sizeof
    • 1.计算数据类型大小
    • 2.计算数组大小
  • 二十六、volatile
  • 二十七、参考资料
  • 总结

前言


提示:以下是本篇文章正文内容,下面案例可供参考
本文着重参考了这篇文章
C语言32个关键字详解

一、char

字符变量是用类型符char定义字符变量,char的主要作用就是声明字符型变量或函数。

char类型是个1字节,它的取值范围是[-128 , 127] (-2^7 — 2^7-1)。

1.定义字符串类型

#include <stdio.h>
int main()
{char c[]="Hello,World!";printf("%s\n",c);printf("%c\n",c[0]);printf("%c\n",c[1]);system("pause");return 0;
}

在这里插入图片描述

2.定义字符类型

#include <stdio.h>
int main()
{char c = 'a'; char a; printf("%d\n", c);  // 打印字符c的ASCII值printf("char的大小=%d\n", sizeof(a));  // 打印字符c的ASCII值system("pause");    // 在Windows系统上暂停程序,等待用户按键继续return 0;
}

在这里插入图片描述

在这里插入图片描述

二、short

类型名为 short int 或 short,声明短整型变量或函数。

short类型为2个字节,它的取值范围是[-32768 , 32767] (-2^15 — 2^15-1)。

#include <stdio.h>
int main()
{short n=4;short c;printf("%d\n",n);short m=40000;printf("%d\n",m);printf("short的大小%d\n",sizeof(c));system("pause");    // 在Windows系统上暂停程序,等待用户按键继续return 0;
}

在这里插入图片描述

三、int

int为基本整型,声明整型变量或函数 。

int类型为4个字节,它的取值范围是[-2147483648 , 2147483647] (-2^31 — 2^31-1)。

#include <stdio.h>
int main()
{int c = 4; int a;printf("c的值%d\n", c);  // 打印字符c的ASCII值printf("int的大小%d\n", sizeof(a));  // 打印字符c的ASCII值   system("pause");    // 在Windows系统上暂停程序,等待用户按键继续return 0;
}

在这里插入图片描述

四、long

1、长整型:long int

long int类型为4个字节。

它的取值范围是[-2147483648 , 2147483647] (-2^31 — 2^31-1)。

2、双长整型:long long int

long long int类型为8个字节。

它的取值范围是[-9223372036854775808 , 9223372036854775807] (-2^63 —
2^63-1)。

#include <stdio.h>
int main()
{long int c; long long int a; printf("long int=%d\n", sizeof(c));  // 打印字符c的ASCII值printf("long long int=%d\n", sizeof(a));  // 打印字符c的ASCII值system("pause");    // 在Windows系统上暂停程序,等待用户按键继续return 0;
}

在这里插入图片描述

五、signed

声明有符号类型变量或函数。
我们知道计算机只认识0和1,所以任何数据到1计算机的底层都会换成0,1,那负数怎么存储呢?肯定这个“-”号是无法存入内存的,怎么办?很好办,做个标记。把基本数据类型的最高位腾出来,用来存符号,同时约定如下:最高位如果是1,表明这个数是负数,其值为除最高位以外的剩余位的值添上这个“-”号;如果最高位是0,表明这个数是正数,其值为除最高位以外的剩余位的值。

六、unsigned

unsigned表示的是无符号数据类型,声明无符号类型变量或函数。

被unsigned修饰的变量,其取值范围一定是大于0的。

1、无符号整形 unsigned int 4字节 0 ~ 4294967295

2、无符号短整型 unsigned short int 2字节 0 ~ 65535

3、无符号长整形 unsigned long int 4字节 0 ~ 4294967295

4、无符号字符型 unsigned char 1字节 0 ~ 255

#include <stdio.h>
int main(){unsigned int a = -11;  unsigned char b = -129;printf("%u\n", a);printf("%u\n", b);return 0;
}

在这里插入图片描述
在这里插入图片描述

七、float

float类型也被叫做单精度浮点类型,声明浮点型变量或函数。

float类型为4个字节,它的数值取值范围为[-3.410^-38 ~ 3.410^38]

#include <stdio.h>
int main(){float n=3.14;float a;printf("%f\n", n);printf("float的大小=%d\n",sizeof(a));return 0;
}

在这里插入图片描述

八、double

double类型也被叫做双精度浮点类型,声明浮点型变量或函数。

double类型为8个字节,它的取值范围为[-1.710^-308 ~ 1.710^308]

#include <stdio.h>
int main(){double n=3.14;double a;printf("%lf\n", n);printf("double的大小=%d\n",sizeof(a));return 0;
}

在这里插入图片描述

补充内容:关于 %f 和 %lf 的使用

%f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。 其中: float,单精度浮点型,对应%f。
double,双精度浮点型,对应%lf。

在用于输出时: float类型可以使用%lf格式 double类型如果使用了%f格式可能会导致输出错误。

在用于输入时: double 类型使用了%f格式,会导致输入值错误。
float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。

九、struct、union、enum

【C语言】结构体、枚举、联合体

十、void

void类型修饰符(type specifier)表示“没有值可以获得”。因此,不可以采用这个类型声明变量或常量。

1.void用于函数声明,没有返回值的函数,其类型为 void。

#include <stdio.h>
void Add(int x,int y){printf("%d\n", x + y);
}
int main(){int gg = 11;int jj = 24;Add(gg,jj);return 0;
}

2.void不能用来声明变量或常量

3.void是没有返回值的,在void函数里面不能使用return来返回数据。

十一、for

for表示的是一个循环语句,可以控制一个循环,并且在每一次循环时修改循环变量。在循环语句中for应该是最为灵活的,不仅可以用于循环次数已经确定的情况,而且还可以用于循环次数不确定而只给出循环结束条件的情况。

1.省略变量初始化

#include <stdio.h>
int main(){int i = 0;  //在for循环外面对变量进行赋值for (; i < 10; i++){printf("%d ", i);}return 0;
}

在这里插入图片描述

2.省略循环条件

#include <stdio.h>
int main(){int i;  //在for循环外面对变量进行赋值for (i = 0; ; i++){printf("%d ", i);}return 0;
}

在这里插入图片描述

3.省略变量更新

#include <stdio.h>
int main(){int i;  //在for循环外面对变量进行赋值for (i = 0; i<10 ; ){printf("%d ", i);}return 0;
}

在这里插入图片描述

4.三个都省略

#include <stdio.h>
int main(){int i;  //在for循环外面对变量进行赋值for (;  ; ){printf("%d ", i);}return 0;
}

在这里插入图片描述

十二、do while

do…while是一个比较特殊的循环,因为在有些条件下,不论条件是否满足,循环过程必须至少执行一次。
注意:在使用do…while语句时,条件放在while关键字后面的括号中,最后必须加上一个分号。

#include <stdio.h>
int main(){int n = 1;int sum = 0;do{sum += n;n++;   //这里我们让n进行自加} while (n <= 1);printf("%d\n", sum); //用sum来计算总和return 0;
}

在这里插入图片描述

十三、while

while循环语句首先检查一个条件,也就是括号中的表达式。当条件为真时,就执行紧跟其后的语句或者语句块。每执行一遍程序,都将回到while语句处,重新检验条件是否满足。如果一开始就不满足,则跳过循环体中的语句,直接执行后面程序代码。如果第一次检验时满足,那么在第一次或其后的循环过程中,必须得有使条件为假的操作,否则循环将无法终止。

#include <stdio.h>
int main(){int n = 1;int  sum = 0;while (n <= 1){sum += n;n++;}printf("%d\n", sum); //计算总和return 0;
}

在这里插入图片描述

十四、break

break语句终止并跳出循环,继续执行后面的代码。

#include <stdio.h>
int main(){while (1){printf("blue");	break;    //直接结束循环,就不会进入死循环}return 0;
}

在这里插入图片描述

十五、continue

在某些情况下,程序需要返回到循环头部继续执行,而不是像break那样跳出循环。

continue的主要作用就是结束本次循环。就是跳过循环体中尚未执行的部分,直接执行下一次循环的操作。
注意:continue语句和break语句的区别:continue语句只能结束本次循环,而不是终止整个循环的执行;break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

在这里插入图片描述

十五、if else

if…else语句。在if后的括号中判断表达式的结果,如果判断的结果为真,则执行紧跟if后语句块中的内容;如果判断的结果为假,则执行else语句后的语句块内容。也就是说,当if语句检验的条件为假时,就执行相应的else语句后面的语句或者语句块

在这里插入图片描述

十六、goto

goto语句为无条件转移语句,可以使程序立即跳转到函数内部任意一条可执行语句。goto关键字后面带一个标点符,该标点符是同一个函数中某条语句的符号。符号可以出现在任何可执行语句前面,并且以一个冒号“:”作为后缀

1.goto从上到下

#include <stdio.h>
int main(){
goto end;printf("1\n");printf("2\n");printf("3\n");printf("4\n");
end:printf("5\n");printf("6\n");printf("7\n");return 0;
}

在这里插入图片描述

2.goto从下到上

#include <stdio.h>
int main(){             //这个代码会进入一个死循环printf("1\n");      //到了goto永远往上执行,不会停止printf("2\n");printf("3\n");printf("4\n");
end:  printf("5\n");
goto end;printf("6\n");printf("7\n");return 0;   
}

在这里插入图片描述

十七、switch case default

switch语句是多分支选择语句。
if语句只有两个分支供选择,而在实际问题中常需要用到多分支选择。在c语言中可以用switch语句直接处理多分支选择情况,将程序的代码可读性提高。

switch后面括号中的表达式就是要进行判断的条件。在switch语句块中,使用case关键字表示检验条件符合的各种情况,其后的语句是相应的操作。其中还有一个default关键字,作用是如果没有符合条件的情况,那么执行default后面默认的情况语句。

#include <stdio.h>
int main(){int day;printf("请输入1-7:");scanf("%d", &day);switch (day){case 1:printf("星期一\n");//	break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期天\n");break;default:printf("你输入的有误!\n");break;}return 0;
}

在这里插入图片描述

十八、return

return 0 代表程序正常退出,return 1代表程序异常退出。

使用return语句可以返回一个变量内的值或一个指针,也可用return0,表示返回为空。

return 代表调到函数外。

return 0代表函数正常终止。return 1代表函数非正常终止。

return 关键字的作用是返回程序流程的控制权。其副作用是返回一个值。

十九、auto

auto:在缺省情况下,编译器默认所有的变量都是auto的,所以autu关键字可以省略。

auto关键字用于定义一个局部变量为自动的,这意味着每次执行到定义该变量时,都会产生一个新的变量,并且对其重新初始化。声明自动变量,一般不使用

二十、extern

extern变量称为外部存储变量。extern声明了程序中将要用到但尚未定义的外部变量。通常外部储存都用于声明在另一个转换单元中定义的变量。
一个工程是由多个c文件组成的。这些源代码文件会分别进行编译,然后链接成一个可执行的模块。把这样的一个程序作为一个工程进行管理,并且生成一个工程文件来记录所有包含源代码文件。

二十一、register

register:这个关键字请求编译器尽可能地将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。注意是尽可能,不是绝对。可以想象,一个CPU的寄存器数量有限,也就那么几个或几十个,如果用户定义了很多很多register变量,那么即便把CPU“累死”也不可能全部把这些变量放人寄存器,可能轮也轮不到你。

二十二、static

【C语言】static关键字修饰局部变量、全局变量、函数

二十三、typedef

typedef关键字用以给数据类型取别名(但是该关键字被分到存储关键字分类中,虽然看起来没什么相关性)。

typedef其实就是一个含义:类型重命名

  1. 对一般类型进行重命名 。

  2. 对结构体类型进行重命名 。

  3. 对指针进行重命名 。

  4. 对复杂结构进行重命名。

1.对整形重命名

2.对数组重命名

3.对指针重命名

二十四、const

二十五、sizeof

siezof的主要作用就是计算数据类型长度

1.计算数据类型大小

#include<stdio.h>
int main(){printf("%d\n",sizeof(char));printf("%d\n",sizeof(short));printf("%d\n",sizeof(int));printf("%d\n",sizeof(float));printf("%d\n",sizeof(double));return 0;
}

在这里插入图片描述

2.计算数组大小

#include <stdio.h>
int main(){int jj[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//int为4个字节//我们定义了10个数//所以10*4=40个字节printf("%d\n", sizeof(jj));//40//下面我们求的是数组的空间大小printf("%d\n", sizeof(jj)/sizeof(jj[0]));//10return 0;
}

在这里插入图片描述

二十六、volatile

volatile关键字和const一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其他线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问

二十七、参考资料

C语言实现窗体程序,DevC++ 窗体应用
Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.zip
Dev C++下载安装和使用教程(新手必看)
static和const的作用与区别

总结

本文仅仅简单介绍了【C语言】关键字详解,评论区欢迎讨论。

http://www.lryc.cn/news/490320.html

相关文章:

  • 什么是计算机网络
  • 【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)
  • CSS3_BFC(十二)
  • C0032.在Clion中使用MSVC编译器编译opencv的配置方法
  • 微信小程序中会议列表页面的前后端实现
  • WEB攻防-通用漏洞文件上传二次渲染.htaccess变异免杀
  • vue实现列表滑动下拉加载数据
  • 全面解析:HTML页面的加载全过程(四)--浏览器渲染之样式计算
  • #Verilog HDL# 谈谈代码中如何跨层次引用
  • LeetCode 每日一题 2024/11/18-2024/11/24
  • 客户流失分析综述
  • 基于51单片机的红包抽奖proteus仿真
  • cangjie (仓颉) vscode环境搭建
  • 阿里云私服地址
  • HTMLCSS:3D金字塔加载动画
  • shell编程(2)(3)
  • DFT专家分析scan insertion时使用EDT的策略
  • Apple Vision Pro开发003-PolySpatial2.0新建项目
  • 分公司如何纳税
  • 在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)
  • 深度优先搜索(dfs)题目合集
  • 性能监控利器:Ubuntu 22.04 上的 Zabbix 安装与配置指南
  • 性能测试的宏观分析:全面提升系统表现的关键
  • ctfshow
  • 【分享一个vue指令】鼠标放置提示指令v-tooltip
  • 掌握 Spring 事务管理:深入理解 @Transactional 注解
  • 字符三角形
  • 【LLM】一文学会SPPO
  • 如何通过ChatGPT提高自己的编程水平
  • NVR管理平台EasyNVR多品牌NVR管理工具的流媒体视频融合与汇聚管理方案