C语言--变量常量

文章目录

  • 一、变量常量
    • [   1、变量](#   1、变量)
    • [   2、常量](#   2、常量)
  • 二、变量的操作
    • [   1、变量的创建](#   1、变量的创建)
      • [     1)、只定义出变量,但变量中没有初始值。](#     1)、只定义出变量,但变量中没有初始值。)
      • [     2)、直接给创建的变量一个初始值。](#     2)、直接给创建的变量一个初始值。)
    • [   2、变量名的的命名规则](#   2、变量名的的命名规则)
    • [   3、变量的赋值](#   3、变量的赋值)
    • [   4、变量的加减](#   4、变量的加减)
    • [   5、变量的隐式类型转换](#   5、变量的隐式类型转换)
    • [   6、强制类型转换](#   6、强制类型转换)
    • [   7、查看变量的类型](#   7、查看变量的类型)
    • [   8、自动变量auto](#   8、自动变量auto)
    • [   9、寄存器变量register](#   9、寄存器变量register)
    • [   10、静态变量static](#   10、静态变量static)
  • 三、变量的作用域
    • [   1、作用域](#   1、作用域)
    • [   2、全局变量](#   2、全局变量)
    • [   3、extren 和 static 在全局变量的应用](#   3、extren 和 static 在全局变量的应用)
    • [   4、局部变量](#   4、局部变量)
  • 四、常量
    • [   1、常量类型](#   1、常量类型)
      • [     1)、整型常量:](#     1)、整型常量:)
      • [     2)、实型常量:](#     2)、实型常量:)
      • [     3)、字符常量:](#     3)、字符常量:)
      • [     4)、字符串常量](#     4)、字符串常量)
      • [     5)、地址常量](#     5)、地址常量)
    • [   2、常量的定义](#   2、常量的定义)
  • 五、ASCII码
  • 六、转义定符
  • 七、C语言关键字
    • [   ​​1、数据类型关键字 (12个)​​](#   1、数据类型关键字 (12个))
    • [   ​​2、控制语句关键字 (12个)​​](#   2、控制语句关键字 (12个))
    • [   ​​3、存储类型关键字 (5个)​​](#   3、存储类型关键字 (5个))
    • [   ​​4、其他关键字 (3个)​​](#   4、其他关键字 (3个))

一、变量常量

   1、变量

     变量:在程序运行中,值可以改变的量

     变量代表一个有名字的、具有特定属性的一个存储单元,可以用来存储数据,也就是变量的值。

     变量必须先定义后使用。命名规则应符合标识符命名规则。

   2、常量

     常量:在程序运行过程中,值不能被改变的量。

     eg:数字1、2、3、0.1、3.14和字母'a'、'b'、"hello"等

二、变量的操作

   1、变量的创建

     有两种创建变量的方法。

     1)、只定义出变量,但变量中没有初始值。

       类型名 变量名;

       int nNum;

     2)、直接给创建的变量一个初始值。

       类型名 变量名 = 初始值;

       int nNum = 100;

   2、变量名的的命名规则

     变量名不能为保留字。

     只能以数字、大小写字母、下划线组成。

     不能以数字开头。

   3、变量的赋值

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

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

       int a = 10;

       a = 20;

     执行完后a的值就为20。

   4、变量的加减

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

       int a = 10, b = 20, c;

       c = a + b;

     执行完后c的值就为30。

   5、变量的隐式类型转换

     当两个不同的类型相加或者相减,变量之间会实现一个隐式类型的转换。

     例如:有一个变量的类型为 int 类型,这个类型和一个 char 类型的变量相加,得到的类型会变成 int 类型,可以使用下面的代码验证。

       int a = 10;

       char b = 5;

       printf("%d", sizeof(a + b));

     输出的结果为4。

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

   6、强制类型转换

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

       (目标类型)变量名;

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

       int a = 10;

       (char)a;

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

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

   7、查看变量的类型

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

     例如要输出一个变量所占字节:
**       int main(){
       int a = 10;
       printf("%d", sizeof(a));
       }**

   8、自动变量auto

     自动变量是C++10一提出的新变量类型,微软studio2012也将其应用到C上面,自动变量会根据初始化数据的内容确定实际类型,因此声明自动变量时必须初始化如下:
**       auto nNum = 1;
       auto cChar = 'A';
       auto szStr = "Mammon";**

     需要注意的是,auto不能与其它类型联合使用,例如:

       auto int nNum = 1;

     函数与模版不能被声明为auto,例如:

       void MyFun(auto par){};

       template <atuo T>

     auto 不能用于类型转换或其他一些操作,例如:
**       int nNum = (auto)cChar;
       int nSize = sizeof(auto);**

   9、寄存器变量register

     一般变量都保存在计算机的内存中,而寄存器变量则优先被存储在寄存器中,寄存器变量要在定义时加上类型修饰符。

     例如:
**       register int nNum;(正确)
       register char szStr5; (错误,超出寄存器大小)**

     只有局部变量或者形式参数可以是寄存器变量,全局变量和静态局部变量能被定义为静态变量,寄存器变量会占用一个寄存器存放变量的值当函数结束时释放计算机后,该变量随之消失,由于计算机中计算器计算器的数目有限,不能使用太多的计算器变量,寄存器变量只限于int型差型和指针类型变量使用,如果计算机使用饱和时,程序将计算机变量自动转换为自动变量处理。

   10、静态变量static

     静态变量的作用类似于全局变量,所有的全局变量均为静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量,

     例:
**       static int nNum;
       static int nNum = 1;**

     静态变量的特点是在程序的整体执行过程始终存在,但是它在作用力之外不能使用静态变量的生存期,就是整个程序的运行期,函数体内如果定义了静态变量的同时进行了初始化,则以后程序不再进行初始化操作。

三、变量的作用域

   1、作用域

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

       void test(){ ......}

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

   2、全局变量

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

   3、extren 和 static 在全局变量的应用

     如果组成这一个程序的几个文件需要用到同一个全局变量,只要在其他引用该全局变量的原程序文件中说明该全局变量为extern即可.

       extern int nNum; //nNum 已经在其它地方定义。

     如果一个原程序文件中的全局变量仅限于该文件使用,只要在全局变量定义时的类型说明前加static即可。

       static int nNum; // nNum仅限于本文件中使用。

   4、局部变量

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

四、常量

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

   1、常量类型

     1)、整型常量:

       整数。如1、2、3、10000、0、-100、0x8A等

       可以是十进制、八进制或十六进制的常量。

       前缀指定基数:0x或0X表示16进制,0表示八进制,不带前缀则默认表示10进制。

       整数常量也可以带一个后缀,后缀是U和L的组合,U表示无符号整数(unsigned),L表示长整数(long),后缀可以是大写,也可以是小写,U和L的顺序任意。

     2)、实型常量:

       有两种表示形式

         ①十进制小数形式:

           由数字和小数点组成。如123.456、-12.34等

         ②指数形式:

           由于计算机输入或输出时无法表示上标和下标,所以规定以字母e或E代表以10为底的指数。

     3)、字符常量:

       有两种形式的字符常量

         ①普通字符常量:用单引号括起来的一个字符。

           如'a'、'B'、'3'、'#'。

         ②转义字符:以字符\开头的字符序列

           \n换行

           \t水平制表符tab

           '单引号

           "双引号

           \x十六进制形式

           十六进制的转义字符 '\x56' :x后面的十六进制数最多两个,最少一个

     4)、字符串常量

       用一对双引号括起来的若干个字符。

       如"ABC"、"123"等,用双引号把若干个(0个、1个、更多)字符括起来,字符串不包括双引号。

     5)、地址常量

       每一个常量、变量、数组的地址在程序运行期间是不能够被改变的,称为地址常量。

   2、常量的定义

     1)、#define

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

        #define 常量名 值

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

         #define AGE 18

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

     2)、const修饰

       const 是将可变量变为不可变量的一个修饰词,使用这个修饰词减变量修饰为不可变的量也可以间接达到常量的方法。
**       int main(){
       const int a = 10;
       }**

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

五、ASCII码

   ASCII码 是 American Standard Code for Information Interchange 的缩写。

  

  

六、转义定符

   转义字符是一种与原字符意义不相同的一种字符类型。

  

七、C语言关键字

   C语言共有32个关键字,这些是编译器预定义的、具有特殊含义的标识符,不能用作变量名或函数名等自定义标识符。它们通常根据功能被分为以下几类:

   ​​1、数据类型关键字 (12个)​​

     这类关键字用于声明变量、函数或其他数据结构的类型。

    

   ​​2、控制语句关键字 (12个)​​

     这类关键字用于控制程序的流程,包括条件判断、循环和跳转。

    

   ​​3、存储类型关键字 (5个)​​

     这类关键字用于控制变量的存储方式和生命周期。

    

   ​​4、其他关键字 (3个)​​

     这类关键字用于修饰变量的属性或进行特殊操作。

    

相关推荐
sensen_kiss1 天前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.5 软件复用(Software Reuse)
学习·软件工程
王_teacher1 天前
23种设计模式之工厂模式
设计模式·软件工程·简单工厂模式·工厂方法模式·抽象工厂模式
sensen_kiss1 天前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.6 批判性分析 / 关键性分析(Critical Analysis)
学习·软件工程
sensen_kiss1 天前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.7 开源开发 (Open Source Development)
开源·软件工程
小bo波2 天前
形式化方法 × UML
java·软件工程·uml·面向对象·形式化方法·tla+
lsyeei2 天前
UML 状态机图
软件工程·uml
guslegend2 天前
第2章:从模型到意图,软件工程的范式牵移
软件工程
202321336073 毛敏磊2 天前
个人总结——网络安全与软件工程综合实践
安全·web安全·软件工程
guslegend2 天前
AI驱动的缺陷全自动修复
人工智能·软件工程
明航咨询—张老师2 天前
安全左移的利器:CISAW-SS安全软件认证如何重塑开发安全基因?
软件工程·安全架构·安全性测试