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;
变量名的的命名规制如下:
- 变量名不能为保留字
- 只能以数字、大小写字母、下划线组成
- 不能以数字开头
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 修饰的时候,一定要给这个变量一个初始值,否则后面没有办法再给这个变量一个初始值了,这种方法一般用在局部。
总结
变量的使用是非常简单的,后面的使用还是比较多,慢慢记住就可以了。常量一般对于一些固定的值进行固定,让它不轻易修改。
C语言变量常量的更多相关文章
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...
- C语言变量声明内存分配
转载: C语言变量声明内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等.其操作方式类似于数据结 ...
- C语言变量的类型和存储位置
. C语言变量主要分为全局变量.静态全局变量.局部变量.静态局部变量和寄存器变量.其中静态变量用static关键字进行修饰.程序所占用的内存可以分为以下几个部分: ()代码段-存放程序代码,只读的,不 ...
- Java复习3.变量.常量.String.
Java 中的变量常量数据类型 20131004 前言: 还是国庆节,无聊的很,就没事复习点Java的知识,其实C/C++基本上是现在大型企业面试的语言,但是多学习点Java是没有坏处的,而且,将来工 ...
- Go语言【第八篇】:Go语言变量作用域
Go语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围,Go语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量: 函数外定义的变量称为全局变量: 函数 ...
- GO语言学习(十三)Go 语言变量作用域
Go 语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函 ...
- go语言变量作用域
Go 语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函 ...
- GO中标识符,标识符,变量,常量,iota
参考:https://www.cnblogs.com/nickchen121/p/11517455.html 一.标识符与关键字 1.标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变 ...
- Go语言之Go语言变量
GO 语言变量 Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性. 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函 ...
- 06 C语言变量
C语言变量 变量的本质 变量的本质其实是程序可操作的存储区的名称. C 中每个变量都有特定的类型,类型决定了变量存储的大小的范围,在范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的名称可以 ...
随机推荐
- [操作系统] - 进程切换&进程控制
2.1.6 进程切换 名称解析 进程的上下文(Context) 当一个进程在执行时,CPU的所有寄存器的值.进程的状态以及堆栈中的内容被称为进程的上下文Context 进程的切换(switch) 当内 ...
- 14-压缩css
const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') const M ...
- 第4章. 安装reco主题
大家可以按照我的教程来安装,也可以访问 reco_luan 大佬的 官方教程 根据自己的电脑类型和开发环境配置,来选择合适的安装方式. 一.快速开始 npx # 初始化,并选择 2.x npx @vu ...
- 【机器学习与深度学习理论要点】07.A/B测试的概念及用法
1)什么是A/B测试? A/B测试就是两种模型同时运行,并在实际环境中验证其效果的方式.在互联网公司中,A/B测试是验证新模块.新功能.新产品是否有效,新算法.新模型的效果是否有提升,新设计是否收到用 ...
- 2022年5月5日模拟赛题解与总结(ABC237)
总结 初一第一,竞赛班第二 还可以,为了照顾提高班来的四个同学放了四个水题,可惜他们做的不是很理想,希望他们下次可以获得满意的成绩 这次做的其实是 AtCoder ABC237 A.Not Overf ...
- docker常用命令之帮助启动类命令和镜像命令
docker安装之后,启动时会报如下错误: Job for docker.service failed because start of the service was attempted too o ...
- Python NumPy 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a.shape == ...
- 火爆,Github标星240K的编程学习路线图,适合所有程序员!
推荐一个涵盖开发.运维.产品设计的学习路线图,在Github已经start超过240K,包括各门编程语言! 一.涵盖的路线图 该项目涵盖了非常全面的学习路线图: 前端路线图 后端路线图 ASP.NET ...
- 测序数据学习笔记:bcl2fastq 安装
相比二进制的 bcl2fastq2,基于 Perl 语言的 bcl2fastq-1.8.4 或许是从源码层面学习了解 Illumina 测序数据处理一个不错的选择.源码版本的 bcl2fastq-1. ...
- The shell
The shell shell是什么? 如今的计算机有着多种多样的交互接口让我们可以进行指令的的输入,从炫酷的图像用户界面(GUI),语音输入甚至是 AR/VR 都已经无处不在. 这些交互接口可以覆盖 ...