晖绝的C语言学习记录2——230721

数据类型介绍

  • 字符(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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值