大家好呀!小编又带来自己的学习总结啦!
废话不多说,直接上知识!(要长脑子里~~)
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;
}
这样就可以输出我们想要的格式啦,任何在占位符在%后面加上*都会被解析后丢弃。
今天的分享就到这里啦,谢谢大家的观看!