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 修饰的时候,一定要给这个变量一个初始值,否则后面没有办法再给这个变量一个初始值了,这种方法一般用在局部。


总结


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


目录
相关文章
|
2月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
4天前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
1月前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。
|
2天前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
8 0
|
1月前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。
|
1月前
|
安全 编译器 C语言
C语言常量的定义与使用的注意点
在 C 语言中,常量是在程序运行期间值不变的量,通过字面值、`#define` 或 `const` 关键字定义。字面常量直接在代码中表示固定值,如整数 `100`、浮点数 `3.14`、字符 `&#39;A&#39;` 和字符串 `&quot;Hello, World!&quot;`;`#define` 用于定义宏,如 `#define PI 3.14159`;`const` 则定义不可变变量,如 `const int daysInWeek = 7`。常量可用于数组大小、循环边界等场景,并能提升代码的可读性和可维护性。使用时需注意作用域、类型安全和命名,避免直接使用数字(魔法数字)。
|
1月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
1月前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。
|
1月前
|
存储 Ubuntu Linux
C语言 多线程编程(1) 初识线程和条件变量
本文档详细介绍了多线程的概念、相关命令及线程的操作方法。首先解释了线程的定义及其与进程的关系,接着对比了线程与进程的区别。随后介绍了如何在 Linux 系统中使用 `pidstat`、`top` 和 `ps` 命令查看线程信息。文档还探讨了多进程和多线程模式各自的优缺点及适用场景,并详细讲解了如何使用 POSIX 线程库创建、退出、等待和取消线程。此外,还介绍了线程分离的概念和方法,并提供了多个示例代码帮助理解。最后,深入探讨了线程间的通讯机制、互斥锁和条件变量的使用,通过具体示例展示了如何实现生产者与消费者的同步模型。
|
2月前
|
存储 编译器 C语言
【C语言篇】C语言数据类型和变量
我们使⽤强制类型转换都是万不得已的时候使用,如果不需要强制类型转化就能实现代码,这样⾃然更好的.
25 1