数据类型介绍
- 字符(char)
- 整型(int)
- 浮点型(float)
- 布尔型(_Bool)
signed和unsigned
- int类型自带正负号,所以等于signed int,所以unsigned必须声明
如下是int的最值,来自limits.h
#define SHRT_MIN (-32768)
//有符号16位整型的最小值
#define SHRT_MAX 32767
//有符号16位整型的最大值
#define USHRT_MAX 0xffff
//无符号16位整型的最大值
#define INT_MIN (-2147483647 - 1)
//有符号整型的最小值
#define INT_MAX 2147483647
//有符号整型的最大值
- 但char根据当前系统决定是否默认带正负号,故均需声明
数据类型的取值范围
- 整型具有short, int, long, long long四种
- 可通过如下代码检测其长度
#include<stdio.h>
#include<stdbool.h>
#include<limits.h>
int main()
{
signed int t1 = 24;//INT_MIN (-2147483647 - 1) INT_MAX 2147483647
signed int t2 = -10;
unsigned short int age = 20;//0~65535
int min = INT_MIN;
printf("%d\n", min);
printf("%zd\n", sizeof(char));
printf("%zd\n", sizeof(short));
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(long));//仅规定sizeof(long)>=sizeof(int)
printf("%zd\n", sizeof(long long));//%zd将size_t转化为十进制输出
printf("%zd\n", sizeof(float));
printf("%zd\n", sizeof(double));//sizeof计算的是类型创建的变量所占内存的大小,单位是字节
//size_t是专门为sizeof设置的一个类型
//size_t的本质是unsigned int
return 0;
}
/*来自limits.h还有flaot.h
#define CHAR_BIT 8
#define SCHAR_MIN (-128)
#define SCHAR_MAX 127
#define UCHAR_MAX 0xff
#ifndef _CHAR_UNSIGNED
#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX SCHAR_MAX
#else
#define CHAR_MIN 0
#define CHAR_MAX UCHAR_MAX
#endif
#define MB_LEN_MAX 5
#define SHRT_MIN (-32768)
#define SHRT_MAX 32767
#define USHRT_MAX 0xffff
#define INT_MIN (-2147483647 - 1)
#define INT_MAX 2147483647
#define UINT_MAX 0xffffffff
#define LONG_MIN (-2147483647L - 1)
#define LONG_MAX 2147483647L
#define ULONG_MAX 0xffffffffUL
#define LLONG_MAX 9223372036854775807i64
#define LLONG_MIN (-9223372036854775807i64 - 1)
#define ULLONG_MAX 0xffffffffffffffffui64
*/
变量
- 在创建变量时给一个初始值即为初始化
- 分为局部变量和全局变量,当同时出现时优先使用局部变量
#include<stdio.h>
//在这里的是全局变量
int qjbl = 2;
int main()
{
//在这里的是局部变量
int a = 999;
{
//数据类型 变量名;
int weight = 100;//创建后可以给其一个初始值,叫初始化
char ch = 'a';
float score = 58.51f;//若不加f则默认为 double型,会报错
short age = 20;
printf("%d\n", qjbl);
printf("%d\n", weight);
int a = 9;
printf("%d\n", a);//局部变量优先
}
printf("%d\n", a);
printf("%d\n", qjbl);
//printf("%d\n", weight);//此处报错
return 0;
}
- 在内存中全局变量储存在静态区,而局部变量储存在栈区,还有一个叫堆区
算术操作符:+、-、*、/、%
- 简单±*/
- 若想要获得带小数点的/结果,则操作符两端至少要有一个浮点型
- %负数求模的正负号由第一个数字决定
赋值操作符:=和复合赋值
- 可以连续赋值
- 复合赋值
int a = 10;
a = a+3;
a = a-2;
int a = 10;
a += 3;
a -= 2;
两个结果相同
单目操作符:++、–、+、-
- 口诀:先加加后使用,先使用后加加
//单目操作符
//前置++,--
//后置++,--
//++ -->自增1
int e = 3;
//e = e + 1;
//e += 1;
//e++;
++e;
printf("e=%d\n", e)//e=4
//前置后置要在表达式中才体现区别
//前置,先加加后使用
int f = 5;
int g = ++f;
printf("f=%d\n", f);//f=6
printf("g=%d\n", g);//f=6
//后置,先使用再加加
int h = 5;
int i = h++;
printf("h=%d\n", h);//h=6
printf("i=%d\n", i);//i=5
强制类型转换
- 如非必要,不建议使用
//int m = 3.14;//double//会报错
int m = (int)3.14;//强制转换
printf("m=%d\n",m);