C语言变量
创始人
2024-11-15 09:36:42

目录

文章目录

    • 目录
    • 变量
      • 概念
      • 语法
      • 命名规范
      • 案例
    • 数据类型转换

变量

概念

  • 表面:程序运行过程中取值可以改变的数据

  • 实质:变量其实代表了一块内存区域/单元/空间。变量名可视为该区域的标识。

 整个变量分为三部分:

  • 变量名:这个只是变量的一个标识,我们借助变量名来存取数据。

  • 变量空间/内存单元:这个就是内存中分配的一块用来存储数据的空间/区域。

  • 数据/变量值:这个就是存放在变量空间中的数据

注意:我们把数据存放间变量名对应空间的过程称之为变量的赋值操作。

语法

[修饰符] 数据类型 变量列表;

命名规范

  1. 变量名可以由数字、字母(区分大小写)、下划线 _ 、$组成,不能以数字开头。
  2. 不建议使用中文,也不建议使用拼音。
  3. 变量名不能与系统中已有的标识符重名。(比如关键字、保留字…,举例:int,signed,if,break…)。

案例

// 方式1:先声明,后赋值,注意:赋值操作顺序:从右往左 int num1; num1 = 21; // 赋值操作,顺序,从右往左,这个句代码的意思是:将21赋值给num1(num1对应的内存单元) printf("%d",num1);// 将num1对应的数据输出到控制台,需要指明输出数据的格式:int 使用 占位符%d表示 // 方式2:声明并赋初值 int num2 = 21; // 这句代码执行的时候做了两件事:① 向内存申请了一块存储单元(分配内存),② 将21赋值给 num2对应的存储单元 printf("%d",num2); // 方式2:覆盖初始值 int num3 = 21; num3 = 22; printf("%d",num3); // 方式3:变量列表。逗号在C语言中可以作为分隔符和运算符使用 int x = 12, y = 13; 

说明:

  1. 变量定义是,利用同一个类型标识符可同时定义多个变量,各个变量之间使用 , (英文逗号)分

割。

  1. 定义变量后,如果未对变量进行初值的赋予,则变量所代表的内存空间中的数据是随机安排的。
  2. 可以在变量定义的同时给变量赋值,这个操作称为变量的初始化,C语言允许对变量进行初始化。
  3. 初始化变量是,尽量做到类型相同,例子: long l = 567L
  4. 整型数据在内存中的存放方式:

按照补码方法存放:

  • 正整数的补码就是将该数据转换为二进制格式。

  • 负整数的补码就是将该数据的绝对值转换为二进制格式,按位取反,并+1。

  1. 浮点型数据在内存中的存放方式

 采用指数方式存放:

类型符号位指数位尾数位、部分(小数)
float(4个字节)1823
double(8个字节)11152

例子:

需求:将27.5以float类型存放:

解析:

  • 27.5的二级制为11011.1,指数表示法:1.10111 * 2 4

  • 指数:4,加上127,就是131,二进制1000 0011

  • 尾数(小数点后的数)10111,补够23位 1011 1000 0000 0000 0000 000用二进制表示就是

  • (符号数位1位)0 (指数位8位)1000 0011 (尾数位23位)1011 1000 0000 0000 0000 000

  • 所以 单精度浮点型数据27.5 在内存中的存储方式如下0 1000 0011 1011 1000 0000 0000 0000 000

注意:浮点型数据在内存中存放的是一个近似值。

  1. 字符数据在内存中的存放方式:

 以ASCII码存放

 字符的存在分为两种形式,ASCII码(编号,从0开始的正整数)和ASCII码值(数据,包括英文字母大小写、数字、特殊符号)

注意:ASCII码是可以和整数进行数学运算的。

举例:

// 写法一 char c1 = 'A'; // 写法二 char c2 = 65; 

数据类型转换

规则:不同的数据类型参与运算,需要转换为同一类型后运算

数值比较由小到大简单排序:

请添加图片描述

  • 隐式类型转换

    说明:编译系统自动完成,一般是低优先级类型向高优先级类型转换,这种被称作(由小到大)。

    语法:

 大数据类型 变量名 = 小数据类型变量;  

举例:

// 案例1 char c = 'A';// 65 int num = c; printf("%d",num); // 65 // 案例2 char c2 = 'A';// 65 int num2 = c2 + 22; printf("%d",num2);// 87 
  • 强制类型转换

    说明:程序员自己实现,一般是高优先级类型向低优先级类型转换,这种被称作强制类型转换(由

    大到小)

    语法:

    小数据类型 变量名 = (小数据类型)大数据类型变量; 

    举例:

    // 案例1 int num1 = 65; char c1 = (char)num1; printf("%c",c1); // A // 案例2 int num2 = 65; char c2 = (char)(num2 + 32) printf("%c",c2); // a 

    注意:强制类型转换过程中,可能会出现精度丢失的问题。如果大类型数据范围<= 小类型数据范围,此时数据不会丢失,正常转换;如果大类型数据范围 > 小类型数据范围,此时丢失超出部分的数据,精度会缺失!

    原则:类型转换并不会改变原变量的类型。

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...