【C++深入浅出】日期类的实现

这篇具有很好参考价值的文章主要介绍了【C++深入浅出】日期类的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载


目录

一. 前言 

二. 日期类的框架

三. 日期类的实现

3.1 构造函数

3.2 析构函数

3.3 赋值运算符重载

3.4 关系运算符重载

3.5 日期 +/- 天数

3.6 自增与自减运算符重载

3.7 日期 - 日期

四. 完整代码 


一. 前言 

        通过前面两期类和对象的学习,我们已经对C++的类有了一定的了解。本期我们的目标是实现一个完整的日期类,通过实现日期类的构造函数、运算符重载等等内容,加深对前面知识的理解。

        实现了日期类之后,我们就相当于自己实现了一个网上的日期计算器,如下所示【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

         上面的两项功能,都是通过我们接下来要进行的运算符重载实现的。

二. 日期类的框架

        以下是我们本期实现的日期类的基本框架【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

class Date
{
public:
	// 全缺省的构造函数
	Date(int year = 2023, int month = 1, int day = 1);

	// 拷贝构造函数
	Date(const Date& d);

	// 赋值运算符重载
	Date& operator=(const Date& d);

	// 析构函数
	~Date() {};

	// +、=等算数运算符重载
	Date& operator+=(int day); //日期+=天数
	Date operator+(int day); //日期+天数
	Date& operator-=(int day); //日期-=天数
	Date operator-(int day); //日期-天数

	// 日期-日期 返回天数,即日期差
	int operator-(const Date& d);

	// 自增、自减运算符重载
	Date& operator++(); //前置++
	Date operator++(int); //后置++
	Date operator--(int); //后置--
	Date& operator--(); //前置--

	// >、<、==等关系运算符重载
	bool operator>(const Date& d); 
	bool operator==(const Date& d); 
	bool operator >= (const Date& d);
	bool operator < (const Date& d);
	bool operator <= (const Date& d);
	bool operator != (const Date& d);

	//打印数据
	void Print();

private:
	int _year; //年
	int _month; //月
	int _day; //日
};

三. 日期类的实现

3.1 构造函数

        构造函数的目的是初始化类对象,这里我们只需要实现两种构造函数即可。一种是全缺省的构造函数,使用全缺省的构造函数可以让类对象构造时传参更加灵活;而另一种则是拷贝构造函数

        全缺省的构造函数

        很简单,我们只需要判断传入的参数是否符合生活中日期的规则,如果符合则正常进行初始化,反之则程序退出。规则大致如下【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

日期规则

1、月份必须在1月到12月之间。例如0月和13月是非法的

2、日份必须在当前月的天数范围内。例如1月32日,4月31日是非法的

        由于每个月的天数不同,尤其是2月,还有闰年平年之分,故我们可以先写个函数用来获取当前月的天数。这个函数不仅可以用在日份的判断,在之后也会经常用到。

// 获取某年某月的天数
int GetMonthDay(int year, int month)
{
    //用一个数组表示平年每月的天数,下标表示月份
	int MouthDayArray[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	if (month == 2 &&(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) //判断闰年
	{
		MouthDayArray[2]++; //是闰年,2月份天数+1
	}
	return MouthDayArray[month]; //返回当前月天数
}

        有了上面的函数, 再根据之前的规则,我们很容易就可以写出构造函数【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

// 全缺省的构造函数
Date(int year = 2023, int month = 1, int day = 1)
{
	if ( month < 1 || month > 12 || day < 1 || day > GetMonthDay(year, month))
	{
		cout << "日期非法" << endl;
		exit(-1);
	}
	_year = year;
	_month = month;
	_day = day;
}

        拷贝构造函数

        拷贝构造函数就更简单了,拷贝构造函数是用已存在的对象初始化新对象,故不需要考虑日期是否合法,直接拷贝即可,如下:

// 拷贝构造函数, d2(d1)
Date(const Date& d) //加const避免d被意外修改,使用引用传递是为了提高效率
{
	_year = d._year;
	_month = d._month;
	_day = d._day;
}

3.2 析构函数

        由于日期类不涉及动态内存管理,因此使用编译器自动生成的析构函数即可,不需要显式进行实现。 

3.3 赋值运算符重载

        同理,由于日期类不涉及动态内存管理,因此只要进行普通的浅拷贝即可,编译器默认生成的赋值运算符重载函数即可完成要求。

//赋值运算符重载,不需要显式进行实现,这里使用编译器默认生成的即可
Date& operator=(const Date& d)
{
	_year = d._year;
	_month = d._month;
	_day = d._day;
	return *this; //返回当前对象的引用为了实现链式访问
}

3.4 关系运算符重载

        关系运算符有><>=<===以及!=,我们先来实现">"运算符。

        我们要如何判断一个日期大于另一个日期呢?很简单,先比较年,年相等则比较月,月相等则比较日,直到比出结果。代码如下:

// >运算符重载
bool operator>(const Date& d)
{
	if (_year > d._year) //比较年
	{
		return true; 
	}
	else if (_year == d._year && _month > d._month) //年相等比较月
	{
		return true;
	}
	else if (_year == d._year && _month == d._month && _day > d._day) //年月都相等比较日
	{
		return true;
	}
	else //前面的条件都不符合,说明日期比较小,返回false
	{
		return false;
	}
}

        接下来是"=="运算符,这就简单啦,看看年月日是否都相等即可【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载 

// ==运算符重载
bool operator==(const Date& d)
{
    // 逻辑与,下面的条件都符合才返回true,否则为false
	return (_year == d._year) && (_month == d._month) && (_day == d._day);
}

        然后是"<"运算符,我知道我知道,把上面">"运算符的逻辑都反过来再敲一遍就好啦【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载 

        这种方法固然可以,但未免会显得过于冗余。实际上,我们已经实现了">"运算符和"=="运算符重载,那"<"不就是既不大于也不等于嘛,我们复用一下之前的重载函数即可,如下【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

// <运算符重载
bool operator<(const Date& d)
{
    //*this表示当前对象
	return !((*this == d) || (*this > d)); //逻辑非之后表示既不大于也不等于
}

        通过复用的方法,剩下的"<="、">="和"!="我们也可以很轻松的写出来,如下:

// >=运算符重载
bool operator>=(const Date& d)
{
	return !(*this < d); //复用<运算符
}

// <=运算符重载
bool operator<=(const Date& d)
{
	return !(*this > d); //复用>运算符
}

// !=运算符重载
bool operator!=(const Date& d)
{
	return !(*this == d); //复用==运算符
}

小贴士:实现类中成员函数时,并不意味着每个都要将其逻辑完整地写出,有些函数之间可以相互复用,简化代码。例如上面我们只需实现">"号和"=="号的重载函数,其余的函数直接复用即可。

3.5 日期 +/- 天数

        接下来我们来实现日期计算器的第一个功能:推算几天后的日期。通过重载"+/-"号运算符我们可以实现日期 +/- 指定天数【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

         日期 + 指定天数

         首先,我们要知道,日期的进位规则和我们的十进制不一样。每个月的天数都不同,当超过本月的天数,月份都要进1,并且每过12个月年份都要进1。故我们需要用到之前实现的获取本月天数的函数,用来判断是否需要进位。

        例如,求在12月3号的基础上100天后是几月几号?计算过程如下【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

 【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

        下面给出示例代码(初版): 

// 日期+=天数(初版)
Date& operator+=(int day)
{
	_day += day; //先将天数全部加到_day上
    
    //下面开始进行进位
	while (_day > GetMonthDay(_year, _month)) //当_day大于本月的天数说明还需要进行进位,继续
	{
		//月进位
		_day -= GetMonthDay(_year, _month); //减去当前月的天数
		++_month; //来到下一月

		//月进位后判断年是否需要进位
		if (_month == 13)
		{
			++_year;
			_month = 1; //进位后月份来到了1月
		}
	}
	return *this;
}

不过需要注意的是:上面的代码我们对日期进行了修改,返回的是修改后的对象,故实现的不是"+"号的运算符重载,而是"+="运算符的重载。

        那如果我们要实现"+"号呢?很简单,拷贝一份原对象,然后对拷贝后的对象复用"+="运算符重载即可,这样就不会对原对象进行修改。代码如下:

// 日期+天数
Date operator+(int day)
{
	Date tmp(*this); //拷贝构造一个临时变量
	tmp += day; //复用+=运算符,此时tmp就是加上day后的日期,但原对象并没有改变
	return tmp; //以值的形式返回
}

        日期 - 指定天数

        实现了推算几天后的日期,我们再来实现推算几天前的日期。同样的,我们先实现"-="运算符的重载,然后"-"号运算符进行复用即可。

        日期+天数是进行进位,那么日期-天数就是进行借位退位,二者互为逆过程。有一点需要注意的是,退位借的是上一个月的天数,故我们需要先让月先减再让天数增加。动图如下:

【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

        下面是是示例代码(初版): 

// 日期-=天数(初版)
Date& operator-=(int day)
{
	_day -= day; //先全部减到_day上
	while (_day <= 0) //_day小于0说明需要借位,进行循环
	{
		//月先借位
		--_month;
			
		//月借位后判断年是否需要借位
		if (_month == 0)
		{
			--_year; //年借位
			_month = 12; //月变为上一年12月
		}
		_day += GetMonthDay(_year, _month); //将借到的天数进行累加
	}
	return *this;
}

         实现了日期-=天数,那么日期-天数直接复用即可【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

// 日期-天数
Date operator-(int day)
{
	Date tmp(*this); //拷贝构造
	tmp -= day; //复用-=运算符
	return tmp;
}

        细心的小伙伴可能发现了,上面我们写的"+=""-="运算符重载都是初版,是有哪里要改进吗?没错,其实上面的代码在特殊情况下有出错的风险,即用户传入的天数如果是个负数,那么最终得到的答案可能就不是我们想要的。但是我们再来看看网上的日期计算器【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

        没错,网上的日期计算器对负数有着特殊处理,输入负数时则是向前计算,即减去相应的天数。故我们可以参考进行实现:

// 日期+=天数(终版)
Date& operator+=(int day)
{
	if (day < 0) //先判断day的正负
	{
		*this -= (-day); //为负数则复用-=运算符
		return *this; //直接返回
	} 
	_day += day; //先将天数全部加到_day上
    
    //下面开始进行进位
	while (_day > GetMonthDay(_year, _month)) //当_day大于本月的天数说明还需要进行进位,继续
	{
		//月进位
		_day -= GetMonthDay(_year, _month); //减去当前月的天数
		++_month; //来到下一月

		//月进位后判断年是否需要进位
		if (_month == 13)
		{
			++_year;
			_month = 1; //进位后月份来到了1月
		}
	}
	return *this;
}

对于"+="运算,我们通过复用"-="实现对负数的特殊处理。而对于"-="运算,我们可以复用"+="实现对负数的特殊处理,这里就不再展开了。

3.6 自增与自减运算符重载

        在上面实现日期+=天数和日期-=天数的基础上,我们通过复用可以很轻松地实现自增和自减运算符重载,代码如下:

// 前置++
Date& operator++()
{
    *this += 1; //先+1
	return *this; //再返回,返回+1后的结果
}

// 后置++
Date operator++(int) //int用于占位,表示后置++
{
	Date tmp(*this); //拷贝一份
	*this += 1; //然后+1
	return tmp; //返回+1前的结果
}

// 前置--
Date& operator--()
{
    *this -= 1; //先-1
	return *this; //再返回,返回-1后的结果
}

// 后置--
Date operator--(int) //int用于占位,表示后置--
{
	Date tmp(*this); //拷贝一份
	*this -= 1; //然后-1
	return tmp; //返回-1前的结果
}

3.7 日期 - 日期

        我们知道,日期+日期是没有意义的,但日期-日期却是很有价值的,可以用来获取两个日期之间间隔的天数。故我们最后还要来实现"-"号运算符的另外一个重载版本,用于进行日期-日期的运算。

        由于日期类的运算规则较为复杂,涉及到每年的天数不同每月的天数不同,以及平闰年之分,如果采用正常的年-年,月-月的方法,想想都头大【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

        故我们另辟稀径,我们可以先找出较小的那个日期,然后让较小的日期不断+1,用一个变量count来统计+1的次数,直到较小的日期和较大的日期相等时,count的值不就是我们要求的差值嘛【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载代码如下:

// 日期-日期 返回天数
//法1:年-年,月-月,日-日,太过复杂
//法2:找出较小的那个,一直累加直到等于大的那个,累加的次数就是之间的天数
int operator-(const Date& d)
{
    //找出较小的那个日期,这里先假设*this较小
	Date min = *this;
	Date max = d;
	int flag = -1; //用于表示最后相减结果的符号
	if (min > max) //假设不成立,互换
	{
		min = d;
		max = *this;
		flag = 1;
	}

    //小的进行累加,直到二者相等
	int ret = 0; //统计min累加的次数
	while (max > min)
	{
		min++;
        ret++; 
	}
	return ret*flag; //最终累加的次数即为日期差
}

四. 完整代码 

        最后给出本期日期类的完整代码,需要的读者自取【C++深入浅出】日期类的实现,C++深入浅出,c++,类和对象,日期类,运算符重载

class Date
{
public:
	// 获取某年某月的天数
	int GetMonthDay(int year, int month)
	{
		//用一个数组表示平年每月的天数,下标表示月份
		int MouthDayArray[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
		if (month == 2 && (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) //判断闰年
		{
			MouthDayArray[2]++; //是闰年,2月份天数+1
		}
		return MouthDayArray[month]; //返回当前月天数
	}

	// 全缺省的构造函数
	Date(int year = 2023, int month = 1, int day = 1)
	{
		if (month < 1 || month > 12 || day < 1 || day > GetMonthDay(year, month))
		{
			cout << "日期非法" << endl;
			exit(-1);
		}
		_year = year;
		_month = month;
		_day = day;
	}

	// 拷贝构造函数, d2(d1)
	Date(const Date& d) //加const避免d被意外修改,使用引用传递是为了提高效率
	{
		_year = d._year;
		_month = d._month;
		_day = d._day;
	}

	//赋值运算符重载,不需要显式进行实现,使用编译器默认生成的即可
	Date& operator=(const Date& d)
	{
		_year = d._year;
		_month = d._month;
		_day = d._day;
		return *this; //返回当前对象的引用为了实现链式访问
	}

	// 析构函数
	~Date() {};

	// 日期+=天数
	Date& operator+=(int day)
	{
		if (day < 0)
		{
			*this -= (-day);
			return *this;
		}
		_day += day;
		while (_day > GetMonthDay(_year, _month))
		{
			//月进位
			_day -= GetMonthDay(_year, _month);
			++_month;

			//年进位
			if (_month == 13)
			{
				++_year;
				_month = 1;
			}
		}
		return *this;
	}

	// 日期+天数
	Date operator+(int day)
	{
		if (day < 0)
		{
			return *this - (-day) ;
		}
		Date tmp(*this); //拷贝构造
		tmp += day; //复用+=运算符
		return tmp;
	}

	// 日期-=天数
	Date& operator-=(int day)
	{
		if (day < 0)
		{
			*this += (-day);
			return *this;
		}
		_day -= day;
		while (_day <= 0)
		{
			//月让位
			--_month;
			
			//年让位
			if (_month == 0)
			{
				--_year;
				_month = 12;
			}
			_day += GetMonthDay(_year, _month);
		}
		return *this;
	}

	// 前置++
	Date& operator++()
	{
		*this += 1; //先+1
		return *this; //再返回,返回+1后的结果
	}

	// 后置++
	Date operator++(int) //int用于占位,表示后置++
	{
		Date tmp(*this); //拷贝一份
		*this += 1; //然后+1
		return tmp; //返回+1前的结果
	}

	// 前置--
	Date& operator--()
	{
		*this -= 1; //先-1
		return *this; //再返回,返回-1后的结果
	}

	// 后置--
	Date operator--(int) //int用于占位,表示后置--
	{
		Date tmp(*this); //拷贝一份
		*this -= 1; //然后-1
		return tmp; //返回-1前的结果
	}

	// >运算符重载
	bool operator>(const Date& d)
	{
		if (_year > d._year) //比较年
		{
			return true;
		}
		else if (_year == d._year && _month > d._month) //年相等比较月
		{
			return true;
		}
		else if (_year == d._year && _month == d._month && _day > d._day) //年月都相等比较日
		{
			return true;
		}
		else //前面的条件都不符合,说明日期比较小,返回false
		{
			return false;
		}
	}

	// ==运算符重载
	bool operator==(const Date& d)
	{
		return (_year == d._year) && (_month == d._month) && (_day == d._day);
	}

	// <运算符重载
	bool operator<(const Date& d)
	{
		//*this表示当前对象
		return !((*this == d) || (*this > d)); //逻辑非之后表示既不大于也不等于
	}

	// >=运算符重载
	bool operator >= (const Date& d)
	{
		return !(*this < d); //复用<运算符
	}

	// <=运算符重载
	bool operator <= (const Date & d)
	{
		return !(*this > d); //复用>运算符
	}

	// !=运算符重载
	bool operator != (const Date& d)
	{
		return !(*this == d); //复用==运算符
	}

	// 日期-日期 返回天数
	//法1:年-年,月-月,日-日,太过复杂
	//法2:找出较小的那个,一直累加直到等于大的那个,累加的次数就是之间的天数
	int operator-(const Date& d)
	{
		//找出较小的那个日期,这里先假设*this较小
		Date min = *this;
		Date max = d;
		int flag = -1; //用于表示最后相减结果的符号
		if (min > max) //假设不成立,互换
		{
			min = d;
			max = *this;
			flag = 1;
		}

		//小的进行累加,直到二者相等
		int ret = 0; //统计min累加的次数
		while (max > min)
		{
			min++;
			ret++;
		}
		return ret * flag; //最终累加的次数即为日期差
	}

	//打印数据
	void Print()
	{
		cout << _year << "年" << _month << "月" << _day << "日" << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};

以上,就是本期的全部内容啦🌸

制作不易,能否点个赞再走呢🙏文章来源地址https://www.toymoban.com/news/detail-723411.html

到了这里,关于【C++深入浅出】日期类的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++类和对象 练习小项目---日期类的实现.

    🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介::为了更好的理解 C++ 类和对象的知识,我们可以动手实现一下 C++ 的一个简单的日期类,完成相应的函数,更好的帮助我们理解类和对

    2024年02月14日
    浏览(31)
  • C++ | 深入浅出类的封装思想【图文案例,通俗易懂】

    从本文开始,我们就要正式来学习C++中的类和对象了,本文我将带你一步步 从C语言的结构体 struct 到C++的类 class ,真正搞懂有关C++的 面向对象的三大特征之一 —— 封装 作为读者,可能你正在学习C语言,亦或者已经开始学习C++了,也有可能你是一位C++的资深开发者或者其他

    2023年04月21日
    浏览(60)
  • 【C++初阶】类和对象——操作符重载&&const成员函数&&取地址重载&&日期类的实现

    ========================================================================= 个人主页点击直达: 小白不是程序媛 C++系列专栏: C++头疼记 ========================================================================= 目录   前言: 运算符重载 运算符重载  赋值运算符重载 前置++和后置++重载 const成员 取地址及cons

    2024年02月06日
    浏览(53)
  • 【C++深入浅出】C/C++内存管理(教你如何new到对象)

            前面我们学习了有关C++类和对象的知识,学会了如何构建一个完整的类,这些类都是存储在 栈空间 上的。在C语言中,我们不仅可以在栈上定义变量,也可以对 堆 上的空间进行管理,在接下来的几期中,我们的目标就是 学会C++中是如何进行内存管理的 。        

    2024年02月08日
    浏览(47)
  • 类和对象【5】日期类的实现

    类和对象1(初识) 类和对象2(默认成员函数) 类和对象3(初始化列表) 类和对象4(static、const、友元) 在了解了类和对象的基础知识后,我们就可以简单实现一个日期类(前期的知识介绍链接如上,一些基础知识本文就不过多赘述): 我们可以先来看一下网络上找到的

    2024年02月08日
    浏览(34)
  • 【C++初阶】五、类和对象(日期类的完善、流运算符重载函数、const成员、“&”取地址运算符重载)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【C++初阶】四、类和对象 (构造函数、析构函数、拷贝构造函数、赋值运算符重载函数)-CSD

    2024年02月05日
    浏览(46)
  • 【深入浅出C#】章节 4: 面向对象编程基础:封装、继承和多态

    封装、继承和多态是面向对象编程中的核心概念,它们对于构建灵活、可扩展和可维护的软件系统至关重要。 封装(Encapsulation)通过将数据和相关操作封装在一个类中,隐藏内部实现细节,并提供公共接口来与外部进行交互。封装有助于保护数据的完整性和安全性,同时提

    2024年02月10日
    浏览(52)
  • 【C++深入浅出】模版初识

    目录 一. 前言 二. 泛型编程 三. 函数模版  3.1 函数模版的概念 3.2 函数模版的格式 3.3 函数模版的原理 3.4 函数模板的实例化 3.5 模板参数的匹配原则 四. 类模版 4.1 类模版的定义 4.2 类模版的实例化         本期我们要介绍的是C++的又一大重要功能---- 模版 。通过模版,我们

    2024年02月08日
    浏览(54)
  • 深入浅出C++ ——线程库

      在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了 原子类 的概念。要使用标准库中

    2024年02月03日
    浏览(63)
  • 深入浅出C++——C++的类型转换

    在C语言中,如果 赋值运算符左右两侧类型不同 ,或者形参与实参类型不匹配,或者 返回值类型与接收返回值类型不一致 时,就需要发生类型转化。 C语言中总共有两种形式的类型转换: 隐式类型转换:编译器在编译阶段自动进行转换,不能转就编译失败。 显式类型转换:

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包