真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C/C++--------自己動(dòng)手實(shí)現(xiàn)aoti系列

    簡介:

創(chuàng)新互聯(lián)主營建始網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā),建始h5微信平臺小程序開發(fā)搭建,建始網(wǎng)站營銷推廣歡迎建始等地區(qū)企業(yè)咨詢

        atoi: 是ASCII to integer 的縮寫,是把字符串轉(zhuǎn)換成整型數(shù)的一種函數(shù)

        atol: 是ASCII to long 的縮寫,是把字符串轉(zhuǎn)換成長長整型數(shù)的一種函數(shù)

        atoll: 是ASCII to long long 的縮寫,是把字符串轉(zhuǎn)換成長長整型數(shù)的一種函數(shù)

        atoq: 是一種廢棄的atoll版本, 功能與atoll相似, 因?yàn)橐呀?jīng)廢棄, 本次不參與代碼實(shí)現(xiàn)


   代碼實(shí)現(xiàn):

        aoti

    

#include 
/*
*	自己動(dòng)用實(shí)現(xiàn)atoi
*	功能: 將數(shù)字字符串轉(zhuǎn)換成×××并返回
*	author sea 	time 2016/06/15
*/
int myatoi(const char* pstr){
	//判斷指針是否為空
	if(NULL == pstr){
		return -1;
	}
	//接收指針值, 不改變形參值
	const char* p = pstr;
	//保存結(jié)束, 并返回
	int retval = 0;	
	//符號, 正數(shù)為1, 負(fù)數(shù)為0
	int sign = 1;	

	//跳過前面的空格
	while(' ' == *p){
		p++;
	}

	//判斷正負(fù)號
	if('-' == *p){
		sign = -1;
	}
	//如果是符號, 指針后移
	if('-' == *p || '+' == *p){
		p++;
	}
	//
	while('0' <= *p && '9' >= *p){
		//字符0在ascii碼中對應(yīng)的是48, 所以需要減字符0
		//上一次的值乘10, 并加上本次的值
		retval = retval * 10 + ((int)(*p)- '0');	
		//指針后移
		p++;
	}
	//返回結(jié)果
	return retval * sign;
}

int main(int argc, char* argv[]){
	//測試結(jié)果
	char* p = "-123151";
	//打印輸出
	printf("%s = %d\n", p, myatoi(p));

	return 0;
}

    由于aoti只能實(shí)現(xiàn)結(jié)果,int32 范圍是: 2147483647 ~ -2147483648, 超出范圍會(huì)進(jìn)行溢出運(yùn)算

    atol: 

    

#include 
/*
*	自己動(dòng)用實(shí)現(xiàn)atol
*	功能: 將數(shù)字字符串轉(zhuǎn)換成長×××并返回
*	author sea 	time 2016/06/15
*/
long myatol(const char* pstr){
	//判斷指針是否為空
	if(NULL == pstr){
		return -1;
	}
	//接收指針值, 不改變形參值
	const char* p = pstr;
	//保存結(jié)束, 并返回
	long retval = 0;	
	//符號, 正數(shù)為1, 負(fù)數(shù)為0
	int sign = 1;	

	//跳過前面的空格
	while(' ' == *p){
		p++;
	}

	//判斷正負(fù)號
	if('-' == *p){
		sign = -1;
	}
	//如果是符號, 指針后移
	if('-' == *p || '+' == *p){
		p++;
	}
	//
	while('0' <= *p && '9' >= *p){
		//字符0在ascii碼中對應(yīng)的是48, 所以需要減于字符0
		//上一次的值乘10, 并加上本次的值
		retval = retval * 10 + ((int)(*p)- 48);	
		//指針后移
		p++;
	}
	//返回結(jié)果
	return retval * sign;
}

int main(int argc, char* argv[]){
	//測試結(jié)果
	char* p = "-142222234152654151";
	//打印輸出結(jié)果
	printf("%s = %ld\n", p, myatol(p));

	return 0;
}

     atol的范圍-9223372036854775808到9223372036854775807  超出范圍會(huì)進(jìn)行溢出運(yùn)算

    atoll:

    

#include 
/*
*	自己動(dòng)用實(shí)現(xiàn)atoll
*	功能: 將數(shù)字字符串轉(zhuǎn)換成長長×××并返回
*	author sea 	time 2016/06/15
*/
long long myatoll(const char* pstr){
	//判斷指針是否為空
	if(NULL == pstr){
		return -1;
	}
	//接收指針值, 不改變形參值
	const char* p = pstr;
	//保存結(jié)束, 并返回
	long long retval = 0;	
	//符號, 正數(shù)為1, 負(fù)數(shù)為0
	int sign = 1;	

	//跳過前面的空格
	while(' ' == *p){
		p++;
	}

	//判斷正負(fù)號
	if('-' == *p){
		sign = -1;
	}
	//如果是符號, 指針后移
	if('-' == *p || '+' == *p){
		p++;
	}
	//
	while('0' <= *p && '9' >= *p){
		//字符0在ascii碼中對應(yīng)的是48, 所以需要減于字符0
		//上一次的值乘10, 并加上本次的值
		retval = retval * 10 + ((int)(*p)- 48);	
		//指針后移
		p++;
	}
	//返回結(jié)果
	return retval * sign;
}

int main(int argc, char* argv[]){
	//測試結(jié)果
	char* p = "-922337203685477580888";
	printf("%s = %lld\n", p, myatoll(p));

	return 0;
}

網(wǎng)站名稱:C/C++--------自己動(dòng)手實(shí)現(xiàn)aoti系列
文章位置:http://weahome.cn/article/psgpcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部