C语言数据类型、变量常量、作用域生命周期

不同大小的数据占用的内存不同,故存在不同的数据类型。按计算机的存储方式可以分为两大基本类型:整数类型浮点数类型(C语言把不含小数点和指数的数作为整数)。

char             //字符数据类型

short            //短整型

int                //整型

long             //长整型

long long     //更长的整型

float            //单精度浮点型

double        //双精度浮点型

#include<stdio.h>
#include<stdlib.h>

int main()
{
    printf("%d\n",sizeof(char));
    printf("%d\n",sizeof(short));
    printf("%d\n",sizeof(int));
    printf("%d\n",sizeof(long));
    printf("%d\n",sizeof(long long));
    printf("%d\n",sizeof(float));
    printf("%d\n",sizeof(double));

    system("pause");
    return 0;
}

 运行结果:1 2 4 4 8 4 8

sizeof是一个关键字,用来求取数据类型所占空间大小,即占用几个字节。最小的存储单元是位(bit),1个字节是8个比特位。1位字节可以表示0或1,那么8位字节就有256(2的8次方)种可能的0、1组合,通过二进制编码可表示0~255的整数或一组字符。


变量:可以改变的数据(即空间内存储的数据可以改变的量)。

变量的定义以及初始化:类型关键字  变量名

int age=12;

float math_score=67.5;
int age=12;
printf("小明去年%d岁",age);
age=13;
printf("小明今年%d岁",age);

运行结果:12 13  

运行结果表示,变量age空间中存储的数据可以被修改。  

常量:空间中的数据不能被改变的量。

分类:字面常量、常变量、枚举常量。

字面常量:代码中直接可以看到的数据

常变量:使用const关键字修饰的变量,表示空间中的数据不能被修改。

  

以上程序存在错误无法运行,因为变量一旦被const修饰则不能修改空间中存储的数据。

枚举常量

 运行结果:2

RED,GREEN,BLUE依次表示0、1、2 


变量的作用域和生命周期

作用域即变量生效的范围。每个变量都有自己的作用域,只有在自己的作用域内才能被访问。下图所示代码中,age的作用域在花括号内,而调用这个变量的值进行打印时出了age的作用域,因此程序出现报错。

 

 综上可知,花括号外面的无法调用里面的,而花括号外面的可以被里面的访问。无法被访问的本质原因是变量出了作用域就会被释放掉。注意,变量在访问前必须先定义

定义在花括号里面的变量是局部变量。局部变量的作用域和生命周期都在花括号以内。

定义在花括号之外的变量是全局变量。全局变量的作用域:可以在任意位置被访问;生命周期:随着程序运行,在程序结束前被释放。

 

运行结果:小明今年12岁 

常量的作用域和生命周期 

常量一般不讨论作用域。生命周期随程序运行,在程序结束之前被释放。

注意:1.同一个作用域内,变量不能重名。 

           2.不同作用域内,变量可以重名,且遵循“同名就近”原则。

int age = 13;
int main()
{
    {
    int age = 12;
    }
    int age = 11;
    printf("小明今年%d岁\n", age);
    return 0;
}

运行结果:小明今年11岁

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值