C语言变量常量

简介: C语言变量常量

前言


在学习编程语言的时候使用的最频繁的就是变量,变量可以为我们存放一些数据,也对我们编程起到很好的帮助,所以我们来说一下C语言中变量的内容。

C语言是一种强类型的语言,对每个变量的类型必须要规定好,而且规定了,所有的变量必须要先创建后才能使用,否则会报错。


一、数据类型


在说变量之前,先说明一下数据类型。

在C语言中有这么几种基本的数据类型:整形、浮点型、字符型

如果在这些类型前面添加一个 unsigned 就会将这些类型都变为无符号类型

如果在前面添加 signed 就变成有符号类型,但是这个修饰符是默认的,所以平时使用的时候不用添加也可以。


1.整形


类型名 关键字 所占字节数
整形 int 4个字节
长整形 long 8个字节
短整形 short 2个字节
无符号整形 unsigned int 4个字节
无符号长整形 unsigned long 8个字节
无符号短整形 unsigned short 2个字节



2.浮点型


类型名 关键字 所占字节数
单精度浮点型 float 4个字节
双精度浮点型 double 8个字节
无符号单精度浮点型 unsigned float 4个字节
无符号双精度浮点型 unsigned double 8个字节


3.字符型


类型名 关键字 所占字节数
字符型 char 1个字节
无符号字符型 unsigned char 1个字节



字符型也可以在里面存放字符型,但是范围比较小,很适合单片机的开发。


二、变量的操作


1.变量的创建


有两种创建变量的方法。

第一种:只定义出变量,但变量中没有初始值


类型名 变量名;

第二种:直接给创建的变量一个初始值

类型名 变量名 = 初始值;


例如创建出一个int类型的变量a,创建的方法如下:

int a;


变量名的的命名规制如下:


  1. 变量名不能为保留字
  2. 只能以数字、大小写字母、下划线组成
  3. 不能以数字开头

2.变量的使用


2.1 变量的赋值


这里变量的使用就只有重新赋值和输出内容

对变量重新赋值,使用的运算符 = ,例如将创建出来的变量a赋值为20


int a = 10;
a = 20;


执行完后a的值就为20。


2.2 变量的加减


这里可以使用变量中的内容进行相加或者相减等运算符,也可以将加减的内容重新赋给一个变量

int a = 10, b = 20, c;
c = a + b;


2.3 变量的隐式类型转换


当两个不同的类型相加或者相减,变量之间会实现一个隐式类型的转换,例如:有一个变量的类型为 int 类型,这个类型和一个 char 类型的变量相加,得到的类型会变成 int 类型,可以使用下面的代码验证


int a = 10;
char b = 5;
printf("%d", sizeof(a + b));


输出的结果为4。

隐式类型转换是两个不同类型进行运算时将其中小的类型自动转换为一个大的类型。


2.4 强制类型转换


如果有一个 int 类型,想让它变成一个 char 类型,这个时候没有办法使用 隐式类型转换 ,那这个时候就只能强制它进行转换,所以就得使用 强制类型转换 ,强制类型转换的写法如下:


(目标类型)变量名;

按照这个写法将上面的问题解决:


int a = 10;
(char)a;


这样 int 类型的a变量就会强制转换为 char 类型。

强制类型转换是将一个大类型强制转换为一个小类型


3.查看变量的类型


C语言中没有直接调用就可以输出变量的类型的函数,但可以通过查看变量所占的字节数来推断出这个变量所占的类型,利用的关键字为 sizeof() ,这个关键字会返回在括号里的内容所占的字节数,可以通过返回的字节数来判断这个内容的类型。

比如说返回的是4,那可能是 int 类型或者是 float 类型,如果返回的是1,那可能是 char 类型。

这种方法只能用在使用内置数据的变量中,如果对自定义的数据类型或者是自定义函数中是不能使用的。

例如要输出一个变量所占字节:


int main(){
  int a = 10;
  printf("%d", sizeof(a));
}


三、全局变量和局部变量


全局变量顾名思义,就是在全局都可以使用的一个变量,它声明一般是在函数外进行声明。

局部变量是在局部创建的,只能在这个范围中才能使用,这个范围一般叫做作用域,出了这个作用域之后局部变量就不能使用了。


1.作用域


在C语言中,作用域一般是使用 {} 进行区分,比如说有一个函数


void test(){
}


这个函数的作用域就是从 { 开始,一直到 } 结束,在这个区间就属于 test 函数的作用域。


2.局部变量和全局变量的使用问题


比如说选择有一个代码


#include <stdio.h>
int a = 10;
int main(){
  int a = 5;
  printf("%d", a);
  return 1;
}


这里输出的a的值为多少?

答案是5,因为在局部中使用重名的全局和局部变量时,优先使用的是局部的变量。

如果是下面这种情况:


#include <stdio.h>
int a = 10;
void test(){
  int a = 5;
  printf("%d", a);
}
int main(){
  test();
  printf("%d", a);
  return 1;
}


这个代码的输出结果为多少呢?答案是5和10。


四、常量


常量顾名思义就是不会改变的量,在C语言中有两种创建常量的方式


1.#define


使用宏定义#define 创建出常量,创建的方法很简单,就是 #define 常量名 值

创建完后不需要写分号结束,例如创建一个常量 AGE


#define AGE 18



这个常量就创建好了,而这个常量创建的地方是在全局中创建,所以在整个文件中都可以使用


2.const修饰


const 是将可变量变为不可变量的一个修饰词,使用这个修饰词减变量修饰为不可变的量也可以间接达到常量的方法


int main(){
  const int a = 10;
}


上面的代码就可以将a这个变量修饰为一个常量了,但记住在使用 const 修饰的时候,一定要给这个变量一个初始值,否则后面没有办法再给这个变量一个初始值了,这种方法一般用在局部。


总结


变量的使用是非常简单的,后面的使用还是比较多,慢慢记住就可以了。常量一般对于一些固定的值进行固定,让它不轻易修改。


目录
相关文章
|
4天前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
31 12
|
13天前
|
存储 算法 C语言
【C语言】字符常量详解
字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。
66 11
|
13天前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
38 7
|
13天前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
30 5
|
13天前
|
C语言
【C语言】<常量> 之群英荟萃
在C语言中,常量(Constants)是指在程序运行过程中其值不能被修改的固定值。常量包括数值常量(整型和浮点型)、字符常量、字符串常量、使用const关键字定义的常量变量以及枚举常量。
22 4
|
13天前
|
编译器 C语言
【C语言】常量的 “前缀和后缀” 大通关!
在C语言中,常量的前缀和后缀用于明确指定常量的类型和进制系统。前缀主要用于区分不同进制的数字常量,而后缀则用于区分不同类型的整数和浮点数。正确使用前缀和后缀,可以提高代码的可读性和可维护性,确保编译器正确地理解和处理常量。
29 1
|
2月前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
49 1
|
2月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
2月前
|
存储 C语言
C语言:设置地址为 0x67a9 的整型变量的值为 0xaa66
在C语言中,可以通过指针操作来实现对特定地址的访问和赋值。要将地址为 0x67a9 的整型变量值设为 0xaa66,可以先定义一个指向该地址的指针,并通过该指针对该内存位置进行赋值操作。需要注意的是,直接操作内存地址具有一定风险,必须确保地址合法且可写。代码示例应考虑字节序及内存对齐问题。
|
2月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)