可以作用c语言常量的是,C语言-常量/变量

目录

常量

定义:描述一些固定的数据,不能改变的数据

常量的分类:

整型常量

二进制

八进制

十六进制

实型常量

单精度float

双精度double

字符型常量

char

字符串常量

用双引号引起来的就是字符串常量

#include

int main() {

// 整型常量

10;

// 实型常量(小数)

// 单精度float/双精度

// 注意默认情况下都是双精度的实型常量也就是所有小数都是默认double

10.1; // 双精度double

88.8; // 双精度double

5.2f; // 单精度float

// 字符型常量,用单引号扩起来的就是字符型常量

// 注意:字符型常量只能写一个字符,写多个会报错除了\r,\n,\t,\f,\\,\',\'',\ddd

'a'; // 字符型常量

'ab'; // 错误

'1';

‘12’;

‘1’; // 这个是么?

// 字符串型常量,用双引号引起来的就是字符串常量

// 注意:无论你用双引号l括起来几个字符,只要是使用双引号扩起来就是字符串常量

"abc";

"a"

return 0;

}

变量

什么是变量

表示的数据可以经常被修改,当一个数据的值不确定,或者经常被修改的时候就应该用变量来表示

比如说:游戏积分,页码

如何定义变量

申请一块存储空间,也就是定义一个变量

定义变量的格式,数据类型,变量名称

定义一个基本数据类型的变量(int,float,double,char)

int number; // 定义一个n名称叫做number的变量,会在内存空间中开辟一块给number,用于存储数据

int value; // 再开辟一块空间给value

![image-20200506235143526](/Users/mac/Library/Application Support/typora-user-images/image-20200506235143526.png)

连续定义变量

int number1,number2; // 连续开辟两个存储空间分别给number1,number2

如何往变量对应的存储空间中存储数据呢?

注意:变量中不能随便的存储数据,只能存储与之对应的数据,也就是说之前申请内存空间为int类型,那就只能存储int类型,如果存储float,double会出一些问题

int number;

number = 2; // 这时候会把数据2这个值放在申请好了的number的存储空间中

变量的第一次赋值称之为初始化

要想使用变量都必须先对变量进行初始化,然后才能使用

如果不对变量进行初始化,那么其实变量存储的就是一些垃圾数据

如何使用变量

要使用占位符

int number = 10;

printf("%i",number);

变量初始化的两种方式

// 初始化的两种方式

// 1,先定义再初始化赋值

int value1;

value1 = 10;

// 2,定义的同时初始化

int value2 = 10;

完全初始化

// 完全初始化

int value3, value4;

value3 = value4 = 10; // 把10赋值给value4,再把value4的值赋值给value3

int value3,value4;

value4 = 10;

value3 = value4;

部分初始化

// 部分初始化

int value5,value6 = 10; // 开辟两个存储空间value5,value6,将10的值赋值给value6,但是value5并没有给赋值

如何修改变量的值

int number = 10; // 定义并初始化一个变量number,将10的值赋值给number

number = 20; // 将20的值赋值给变量number,此时number的内存空间没有是10,只有20了。它只能存一个值

变量之间的值传递

int number = 10; // 定义并初始化一个变量number,将10的值赋值给number

int number1 = number; // 将number的值赋值给number1,此时会先去找number这个变量的内存地址,找到内存地址取出存的值,将这个值赋值给number1

连续赋值

int a,b,c; // 定义并初始化三个变量a,b,c

a = b = c = 10; // 将10的值赋值给c,再将c的值赋值给b,再将b的值赋值给a

如何查看变量的值(简单用法)

// int类型

int number = 10;

printf("number的值是%i",number) //使用%i

// float类型

float FloatNumber = 20.0f; // float类型要加上f标示,默认是double类型的

printf("FloatNumber的值是%f",FloatNumber) // 使用%f

// double类型

double DoubleNumber = 30.01234567890;

printf("DoubleNumber的值是%lf",DoubleNumber) //使用lf,longfloat

printf("DoubleNumber的值是%.10lf",DoubleNumber) // printf函数默认强制输出小数点后6位,想要输出双精度的需要指定你要输出小数点后面几位

// char类型

char CharNumber = 'a';

printf("CharNumber的值是%c",CharNumber) // 使用%c

变量的作用域

c语言中所有变量都有自己的作用域,根据作用域的不同分为局部变量和全局变量。

int main(){

a = 10;

int a ; // 变量的作用域是从定义的哪一行开始,到大括号结束,报错

return 0; // return 代表函数的结束,只要执行到这里就代表这个函数结束了

}

例如:把变量放在rerurn后面执行--报错

int main(){

int number;

number = 10;

return 0 ;

printf("%i",number); // 此时number在return的后面,number的作用域也就消失了

}

例如:不同函数之间的变量作用域是不一样的,不能相互调用的

int call(){

int number;

return 0;

}

int main(){

number = 10;

printf("%i",number); // 此时在main函数中调用call函数中的变量number,会报错。number在call函数中,他的作用域之存在于call的函数内存空间中。

return 0;

}

例如:在同一函数中,函数的嵌套时,内层函数可以使用外层函数的变量,外层函数不能使用内层函数的变量

int main(){

int number;

{

number = 10;

printf("%i",number);// 此时可以正常打印,外层中number时遇到她所在的内存空间,他和{printf("%i",number)}是同一级别的

}

return 0;

}

int main(){

{

int number;

number = 10;

}

printf("%i",number); // 此时是错误的,number的变量存储在{}中,并不在main()函数中

return 0;

}

例如:变量查找的顺序(第一种)

如果自己的作用域中有就使用自己的

不同的作用域中可以定义相同的变量名称

统一范围内不能出现同名的变量

int main(){

int number;

{

int number = 20;

printf("%i",number); // 20,变量名称相同,先查找本内存空间的变量number也就是20

}

printf("%i",number); // 0,因为在此内存空间中有number的变量,但是并没有初始化所以是0,也可能是其他的数字,随机的

return 0;

}

变量的内存分析

内存和字节的关系

每块内存都是连续的

每块内存的大小都是一样的

合理的分配内存会节省很多空间

53278926a91b890cbe63de4b9e8f61ca.png

一个变量所占用的内存空间,不仅跟变量的类型有关系,还跟编译环境有关系

同一个变量类型在不同的编译环境下所占用的存储空间是不一样的-这就是我们要定义变量类型的原因(优化存储空间)

内存由大到小寻址

// 内存空间分析

int main(){

// 内存寻址从大到小,按照这种规则那么先定义的变量内存地址肯定比后定义的要大

int number = 0;

int value = 0;

printf("number的内存地址是%p\n",&number); // 使用%p占位符,&符号就可以获取变量的内存地址,打印出来的是16进制

//a, b, c, d, e, f

//10, 11, 12, 13, 14, 15

printf("value的内存地址是%p\n",&value);

return 0;

}

变量存储单元的第一个字节地址就是该变量的地址

任何变量在存储空间都是二进制存在的

17699eb902c3aa3cd5513e6822b1b02a.png

标签:10,常量,int,number,C语言,printf,变量

来源: https://www.cnblogs.com/shanshan-test/p/12850024.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值