Bootstrap

【C语言】关键字详解

【C语言】关键字详解


前言


提示:以下是本篇文章正文内容,下面案例可供参考
本文着重参考了这篇文章
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]));//10
	return 0;
}

在这里插入图片描述

二十六、volatile

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

二十七、参考资料

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

总结

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

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;