C语言 数据类型 变量的作用域和生命周期 常量的4种类型

目录

数据类型

变量 —— 能被改变的量

常量 —— 不能改变的量


数据类

char   字符数据类型

short  短整型

int  整型

long  长整型

long long  更长的整型

float  单精度浮点数

double  双精度浮点数

#include<stdio.h>
int main(void)
{
    //字符类型
    char ch = 'a';
    
    //整型
    int age = 20;
   
    //短整型
    short num =10;
   
    //long
    //long long
   
    //单精度浮点型
    float weight = 55.5;
   
    //双精度浮点型
    double = 0.0;

    printf("%d\n",100);  //打印一个整数——%d
    printf("%d\n",sizeof(char));  
    printf("%d\n",sizeof(short));
    return 0;
}

sizeof 是关键字也是操作符  用来计算类型或者变量所占空间的大小 

C语言标准: sizeof(long) >= sizeof(int)

sizeof 的单位是什么?——字节 byte

计算机中的单位:

bit ——比特位    一个比特位是存放一个二进制位的

byte—— 字节 = 8 bit

kb = 1024 byte

mb = 1024 kb

gb = 1024 mb

变量 —— 能被改变的量

#include<stdio.h>
int main(void)
{
    //创建一个变量
    int age = 20;
    // int 是变量的类型  age是变量的名字 = 20;   把20赋值给变量age
    //类型 变量的名字;  (不赋值,可以这样写,但是不推荐)
    
    double weight = 60.5;
    age = age + 1;
    weight = weight - 10;
    
    printf("%d\n", age);     // %d —— 整型
    printf("%lf\n", weight);   // %f —— float   %lf —— double
    return 0;
}

%d —— 整型

%f —— float  

%Lf —— double

#include<stdio.h>
// 全局变量-{}外部定义的
int a = 120;
int main(void)
{
    // 局部变量-{}内部定义的
    int a = 100;
    printf("%d\n", a);   // 输出结果为100
    return 0;
}

当局部变量和全局变量名字冲突的情况下,局部优先,不建议把全局变量和局部变量的名字写成一样的

写个代码求2个整数的和

#include<stdio.h>
int main(void)
{
    int a = 0;
    int b = 0;
    int sum = 0;
    
    scanf("%d %d", &a, &b);    // scanf函数是输入函数
    sum = a + b;
    
    printf("sum = %d\n", sum);
    return 0;
}

使用了 scanf()函数会报错,不管是2013版本还是2019版本,都会报错,解决办法1:源文件的第一行,加上:#define _CRT_SECURE_NO_WARNINGS 1   

为了以后不用每次都要输入#define _CRT_SECURE_NO_WARNINGS 1  可将其保存到装机文件newc++file.cpp里:找到newc++file.cpp以记事本方式打开,把#define _CRT_SECURE_NO_WARNINGS 1 放进去,保存,以后每次新建源文件,它都会默认在第一行

不建议使用scanf_s()函数,这个函数是VS编译器提供的,不是C语言标准提供的,不可移植

变量的作用域(通俗讲就是哪里起作用,哪里就是它的作用域)

局部变量的作用域:就是变量所在的局部范围
全局变量的作用域:整个工程   (在源文件A.c里定义的变量g_val,源文件B.c一样可以调用,只需在B.c的main函数前声明一下变量:extern int g_val )

变量的生命周期:变量的创建和销毁之间的时间段

局部变量的生命周期:进入局部范围生命开始,出局部范围生命结束
全局变量的生命周期:程序的生命周期

#include<stdio.h>
//变量的作用域和生命周期(通俗讲就是哪里起作用,哪里就是它的作用域)
//局部变量的作用域:就是变量所在的局部范围
//全局变量的作用域:整个工程

int g_val = 2021;  //全局变量

int main(void)
{
    printf("1:%d\n", g_val);   //输出 1:2021
   
    printf("hehe\n");
    
    {
        printf("2:%d\n", g_val);   //输出 2:2021
        
        int a = 10;    //局部变量
        printf("a = %d\n",a);  //输出 a = 10 (如果把int a = 10;  写在它下面一行 会报错)
    }
    
    printf("3:%d\n", g_val);    //输出 3:2021
    return 0;
}

常量 —— 不能改变的量

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量(enum)
#include<stdio.h>

int main(void)
{
    //1.字面常量
    
    3.14;   //浮点数常量
    10;    //整数常量
    'a';      //字符常量
    "abcdef";  //字符串常量
   
    //2.const修饰的常变量(本质是变量)
    
    int num = 10;   //此时num是变量
    num = 20;
    printf("num = %d\n", num);   // 输出20

    return 0;
}
#include<stdio.h>

int main(void)
{
    //2.const修饰的常变量(本质是变量)

    const int num = 10;   //此时num是常变量 —— 具有常属性(不能被改变的属性)
    num = 20;
    printf("num = %d\n", num);    //会报错 num被const修饰 已经不能改了

    return 0;
}
//3.#define定义的标识符常量

#include<stdio.h>
int main(void)
{
    
    #define max 100   //max 是define出来的 这一行也可放在上面{}外面
    int n = max;   //max 是不能改的
    printf("n = %d\n", n);   //输出 n = 100

    return 0;
}
//4.枚举常量 —— 可以一一列举的常量

#include<stdio.h>

//比如枚举性别
enum Sex
{
    //这是枚举类型的变量的未来可能取值
    //枚举常量
    male,
    female,
    secret
};

int main(void)
{
    enum Sex s = male;   //此处只能把male female secret三个中的一个赋值给s
    
    printf("%d\n", male);   //输出 0
    printf("%d\n", female);  //输出 1
    printf("%d\n", secret);   //输出 2
    
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值