C语言学习笔记
所有运行结果均在编译器VS2022,Debug,x86的环境下得出
一、数据类型介绍
1.总览
2.布尔类型
在C99中引入了布尔类型,专门表示真假
并且,在C语言中,整数0表示假,非0表示真
1 _Bool
布尔类型的使⽤得包含头⽂件 <stdbool.h>
布尔类型变量的取值是:true或者false.
3.用sizeof计算各类型的长度
3.1 sizeof简介
- sizeof是一个关键字,也是操作符,计算后的长度单位是字节
- sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
- sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
- sizeof 的计算结果是 size_t 类型的。
- sizeof( 类型 )
- sizeof 表达式
3.2 sizeof的使用示例
3.2.1 类型
# include <stdio.h>
int main()
{
printf("%zd\n", sizeof(char));
printf("%zd\n", sizeof(_Bool));
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;
}
3.2.2其他
#include <stdio.h>
int main()
{
//int a = 10;
//printf("%zd\n", sizeof a);
//printf("%zd\n", sizeof(a));
//printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(3.14));//double
printf("%zd\n", sizeof(3.14f));//float
return 0;
}
3.3 sizeof中的表达式不计算
#include <stdio.h>
int main()
{
short s = 2;//s是占2个字节
int b = 10;
printf("%zd\n", sizeof s);
printf("%zd\n", sizeof(s = b + 1));
//sizeof的表达式不计算
printf("s = %d\n", s);
return 0;
}
二、signed和unsigned
- signed 关键字,表⽰⼀个类型带有正负号,包含负值;
- unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数
- 对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int
- 整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍
- char 不等同于 signed char ,它有可能是 signed char ,也有可能是 unsigned char 。
三、变量
- 分为全局变量和局部变量
- 全局变量:在⼤括号外部定义的变量就是全局变量
- 局部变量:在⼤括号内部定义的变量就是局部变量
- 其实当局部变量和全局变量同名的时候,局部变量优先使⽤。
四、单目操作符
4.1 ++、–
4.1.1前置
先加(减)1,后使用
例如:
- int a = 10;
- int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
- printf(“a=%d b=%d\n”,a , b);
它就等于:
- int a = 10;
- a = a+1;
- b = a;
- printf(“a=%d b=%d\n”,a , b);
4.1.2后置
先使⽤,后加(减)1
例如:
- int a = 10;
- int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
- printf(“a=%d b=%d\n”,a , b);
它就等于:
- int a = 10;
- int b = a;
- a = a+1;
- printf(“a=%d b=%d\n”,a , b);
4.2 +、-
- 运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错。
- 运算符 - ⽤来改变⼀个值的正负号,负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负数。
五、强制类型转换
- int a = (int)3.14;