变量及数据类型(二)

1、变量:

  •  在程序执行过程中值可以被改变的量
  •  变量代表内存中具有特定属性的一个储存单元,用来储存数据,也就是存放变量的值 
  • 变量有一个名字,以便于可以通过名字访问变量

例如:

#include <dtdio.h>
int main()
{
    //①:声明变量并初始化
    int age = 21; //这里的 = 是赋值
    int count;
    count = 10;
    //②:初始化并修改变量的值
    int number = 12;
    printf("%d\n",number);///12, %d是十进制int的格式化符
    number = 22;
    printf("%d\n",number);//我们对同一个变量进行赋值的时候,后面赋的值会覆盖掉前面赋的值
}

变量的命名规则:

  • 变量名必须以字母(a-z)或者下划线(_)开头,后面可以跟若干个字母、数字或下划线;
  • 变量名不能与C语言中已经存在的标识符(如:int,float,void,if,break等)重名;
  • 变量名、变量值以及变量所占存储单元之间的联系:

标识符:

  • 用来表示对象名字的有效字符。对象包括变量、处理、数组、函数、类型等。也就是标识符就是对象的名字
  • C语言规定标识符只能由字母、数字和下划线3种字符 构成,且第⼀个必须为字母或者下划线。举例:number,_int
  • 编译系统对大小写很敏感。变量名和函数名⼀般用小写字母+下划线,常量名和枚举名⼀般⽤大写字母+下划线。 举例:变量(set_count)函数(set_count())常量(SET_COUNT)

c语言有三类标识符:

  • 关键字:有32个,系统有特定的含义和用途:如:float,int,if,else等,不能用作自定义表示符(变量和函数)
  • 系统预定义的标识符:如系统提供的库函数名sim,printf,main,scanf以及预处理命令define,include等

用户标识符:

        用户定义的标识符,、用来给程序的变量、自定义函数、符号常量、数组、结构体、共用体、文件等命名

在c语言,要求对所用到的变量使用前必须先强制定义,先定义在使用 。

  • c语言中右32个关键字,不允许用户来定义标识符

  • 12个预处理命令:

        ⼀个类型说明语句可以同时定义多个类型的变量,各个变量之间使用逗号","分隔,多个同类型的变量也可以用多个类型说明语句定义:

// 一个类型说明语句可以同时定义多个类型的变量
int a,b,c,d;// 同类型
int a1 = 3,b1 = 4,c1 = 5, d1 = 6;
// 多个同类型的变量也可以用多个类型说明语句
int a;
int b;
int c;
int d;
int a1 = 3;
int b1 = 4;
int c1 = 5;
int d1 = 6;

        用类型说明语句定义的变量只是说明了为这些变量分了存储空间。以便于存放与之相同类型的数据,在未对这些变量赋值前,这些变量中的值是随机的 ;

        C语言允许在定义变量的同时为变量赋初始值;

        在为长整型变量初始化或者赋值时,如果被赋值数据为基本整型常量,则C编译系统自动将被赋值数据转换成与相应变量类型⼀致。

例如:

long a = 12;// 左边是long类型变量,右边是int常量,当完成赋值操作后,右边的12的类型转换为long

2、基本数据类型(整形、浮点型、字符型)

2.1:数据在内存中的存放方式

  • 数据都是运行在内存中
  • 数据在内存中是以二进制的形式存放
int i;//定义i为存储整形变量
i =10;//给i赋整数值为10

例如:10 的二进制数是:1010 、则内存中实际存放形式为

  •  实际上,数据在内存中是以补码的形式表示的。
  •  正数的补码和原码是相同的(该数的二进制形式)
  •  负数二点补码是将该数绝对值的二进制形式按位取反+1(按位取反是反码,一个一个的取反0变1,1变0),也就是反码右端+1变补码

在内存中最终储存是变量的补码

        反码就是中间量用来转换原码和补码(原码针对应用层)

        在存放整数的存储单元 ,⼀般情况下,最左边的⼀位应用来表示符号位,符号位为0表表示正数,符号位为1表示负数。

2.2、浮点型数据

        浮点型数 也是 实数、小数

2.21:浮点型变量的分类

  • 单精度浮点型(float):在64为系统中是4个字节,精确到小数点后6位,%f
  • 双精度浮点型(double):在64位系统中典型是8字节,精确到小数点后15-16位 ,%lf
  • 长双精度浮点型:(long double):16个字节

占用内存越多,能表达精度越高

2.22:浮点型数据在内存中的存放形式

        浮点型数据在内存中按照指数形式存放,系统将一个浮点数分成 小数部分和指数部分,分别存放。

2.3:字符型数据

字符型变量用来存放字符常量。char c ='A'

char 变量列表;
#include <dtdio.h>
int main()
{
    char c1,c2;
    c1 = 'a';
    c2 = 'b';
    
    printf("c1=%c\n",c1);//输出字符本身
    printf("c2=%c\n",c2);//输出字符本身
    printf("c1=%d\n",c1);//输出对应的ASCII表编号  c1 =97
    printf("c2=%d\n",c2);//输出对应的ASCII表编号  c2 =98
}

ps:在ascll码表中小写大写差32 小-大-32 大-小+32

        一个字符变量只能存放一个字符。c编译系统都规定以一个字节的存储空间来存放存放一个字符,因此,一个字符变量在内存中的大小是1字节(占一个字节)

2.32:字符数据在内存中的存储形式

        将一个字符常量存入一个字符变量,实际上并不是把该字符本身存入内存单元中,而是将该字符对应的ASCII码存入内存单元。

        'a'的ASCII码为97、'b'的ASCII编为98,他们在内存中的存放形式如下所示:

实际上是按照二进制存放,形式为:

        由此可见,在内存中字符数据的存储形式与整型数据类似,这就使得字符型数据和整型数据之间可以通用。也就是1个字符数据既可以字符形式输出,也可以以整数形式输出。

  • 以字符形式输出时,编译系统将内存单元中的ASCII码转换成相应的字符,然后输出。

  • 以整数形式输出时,直接将ASCII码作为整数输出。

  • 因此,可以对字符数据进⾏算术运算,这时相当于对其ASCII码进行算术运算。

例如:

#include <stdio.h>
main() // 此时默认返回值类型是int
{
char c1,c2;
c1 = 97;
c2 = 98;
printf("%c %c \n",c1,c2);// 以字符形式输出,a b
printf("%d %d \n",c1,c2);// 以整数形式输出,97 98
}

char类型大小写字母的转换:

#include <stdio.h>
int main()
{
char c1,c2;
c1 = 'a';// 97
c2 = 'b';// 98
// 转大写
c1 = c1 - 32;// 赋值运算,运算规则是,由右到左
c2 = c2 - 32;
printf("%c %c \n",c1,c2);// ① A B ② 65 66 ③ 'A' 'B'
}

附:ASCIII码表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xb115

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值