C语言中数据类型以及变量和scanf库函数,个人理解总结~~

大家好呀!小编又带来自己的学习总结啦!

        废话不多说,直接上知识!(要长脑子里~~)

C语言的数据类型?

        C语言的数据类型可分为

数据类型
char字符类型

char

signed char

unsigned char

short

int

long 【int】

long long

整型类型

短整型

长整型

更长的整型

int

signed int

unsigned int

....   .....

float

浮点型:

单精度浮点型

float

double

long double

浮点型:

双精度浮点型

double

_Bool布尔类型

各种字符都有着相应的长度,当然要用到sizeof操作符,sizeof是一个关键字,关键字不可被创建!关键字是被定义好的。关键字有哪些,有兴趣的小伙伴可以去看看https://zh.cppreference.com/w/c/keyword。sizeof它的作用是,专门计算sizeof操作符类型长度的,单位是字节。在用sizeof一般都会在占位符%后面加z。如下图:

#include <stdio.h>
int main()
{
    printf("%zd\n",sizeof(char)); //字符
    printf("%zd\n",sizeof(short)); //短整型
    printf("%zd\n",sizeof(int)); //整型
    printf("%zd\n",sizeof(long)); //长整型
    printf("%zd\n",sizeof(long long)); //更长的整型
    printf("%zd\n",sizeof(float)); // 单精度浮点数
    printf("%zd\n",sizeof(double)); // 双精度浮点数
    printf("%zd\n",sizeof(long double)); // 更长的浮点数
    return 0;
}

signed和unsigned的介绍

        C语言使用的signed和unsigned关键字修饰字符整型类型的。

        signed:关键字,有符号的,表示一个类型带有正负号,包含负值

        unsigned:关键字,无符号的,表示该类型不带有负号,只有0和正整数

        对于int类型是默认带有正负号的也就是signed int一般前面的signed忽略不写就是int,如果要用无符号的,就需要在它的前面申明是unsigned。char类型是signed还是unsigned取决于使用的编译器系统决定的可能是signed char或者是unsigned char。signed和unsigned的不同就是,unsigned的内存储存量比signed大一倍(会有误差)。

_Bool布尔类型类型

        C语言本来是没有设置有布尔类型,是在c99标准中引进的,专门表示真假。用整型判断,0为假,非零表示真。_Bool类型的取值只有两个true和false两个,且使用_Bool必须包含头文件#include <stdbool.h>。

​#include <stdio.h>
#include <stdbool.h>
int main()
{
    _Bool flag = true; //用_Bool类型定义一个变量
    if(flag)
    {
        printf("hehe\n");
    }    
    return 0;
}

​

变量是什么?

        变量的分类:变量共分为2中,一种为局部变量,第二种为全局变量。

                                全局变量:在大括号外面定义的变量,就是全局变量,应用范围广,当这个变量在接下来的代码中使用的次数多,且值固定,用全局变量的更加的方便。

                                局部变量:在大括号内部定义的变量,就是局部变量,应用范围限制,当这个变量在接下来的代码中使用次数好,且值不固定,选用局部变量更加便捷。

例如:如下图:

#include <stdio.h>
int b = 100; //定义的b为全局变量
int main()
{
    int a = 0; //定义一个整型的局部变量
    a = 10; //把10赋值给整型变量a
    printf("%d", a); //a输出的值为10
    printf("%d", b); //b输出的值为100
    return 0;
}

​

注:在全局变量和局部变量的命名相同时,局部优先。

例如:如下图:

​#include <stdio.h>
int sum = 1000; //定义全局变量sum为100
int main()
{
    int sum = 10; //定义局部变量sum为10
    printf("%d", sum); //输出的值为10
    return 0;
}

​

​

全局变量和局部变量的的内存存放在哪里呢?

        一般我们在学习C/C++语言的时候,我们会关注内存的三个区域,分别是:栈区、堆区、静态区。堆区是用来动态内存管理全局变量存放在静态区,而局部变量存放在栈区。

变量的创建。C语言通常经常变化的值叫做变量,不变的值为常量。

如下图:

//数据类型(整型)   变量(自定义)
//   int               a

//例如:
// 数据类型(字符类型)  变量(自定义)
//     char               ch
//       ...               ....

scanf是什么作用是什么?

        scanf是一个库函数,它的作用是进行输入,刚好与我们的printf库函数作用相反,所以在往后的编程学习中当然脱离不了它们了呀!什么是输入呢?直接上代码!如下图:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%d", &a);
    printf("%d", a);
    return 0;
}

scanf库函数的占位符为与printf的占位符基本一致。&:名字叫:取地址操作符,在用scanf变量前都要加一个取地址操作符。scanf()的返回值是一个整数,表示读取变量的个数,当读取不到变量的个数,返回一个0,当读取数据成功之前发生错误或者读取不到数据时,发生错误时返回一个EOF不会在读取直接跳出,走到return0;结束程序。

赋值忽略符 “*”

        格式在占位符%与数据类型占位符之间加*,例如%*d,%*c......

        有时候用户写出的代码的格式想随着输出格式发生变化时,可以使用赋值忽略符来进行更改。如下图:

​#include <stdio.h>
int main()
{
    int year = 0;
    int mouth = 0;
    int day = 0;
    scanf("%d%d%d", &year, &mouth, &day); //输入今天的年月日2023 10 21
    printf("%d %d% %d", year, mouth, day); //输出的内容为 2023 10 21 
    return 0;
}

​

        如果我想我输入的值不变,输出的值变成2023/10/21或者2023-10-21....呢?那这是就可以用到我们的赋值忽略符了。如下图:

#include <stdio.h>
int main()
{
    int year = 0;
    int mouth = 0;
    int day = 0;
    scanf("%d%d%d", &year, &mouth, &day); //输入今天的年月日2023 10 21
    printf("%d%*c%d%*c%d", year, mouth, day); 
    return 0;
}

​

        这样就可以输出我们想要的格式啦,任何在占位符在%后面加上*都会被解析后丢弃。

今天的分享就到这里啦,谢谢大家的观看!

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值