91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C/C++--------自己動手實現aoti系列

發布時間:2020-07-01 17:03:51 來源:網絡 閱讀:1720 作者:asd1123509133 欄目:編程語言

    簡介:

        atoi: 是ASCII to integer 的縮寫,是把字符串轉換成整型數的一種函數

        atol: 是ASCII to long 的縮寫,是把字符串轉換成長長整型數的一種函數

        atoll: 是ASCII to long long 的縮寫,是把字符串轉換成長長整型數的一種函數

        atoq: 是一種廢棄的atoll版本, 功能與atoll相似, 因為已經廢棄, 本次不參與代碼實現


   代碼實現:

        aoti

    

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

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

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

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

	return 0;
}


    由于aoti只能實現結果,int32 范圍是: 2147483647 ~ -2147483648, 超出范圍會進行溢出運算

    atol

    

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

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

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

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

	return 0;
}

     atol的范圍-9223372036854775808到9223372036854775807  超出范圍會進行溢出運算

    atoll:

    

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

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

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

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

	return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金沙县| 浪卡子县| 民权县| 涟源市| 建宁县| 马边| 石阡县| 张家港市| 封丘县| 平乡县| 新乡市| 德保县| 麻阳| 新郑市| 万宁市| 日喀则市| 邯郸县| 鸡西市| 太湖县| 镇江市| 贵溪市| 南京市| 大宁县| 武安市| 南川市| 孝昌县| 应用必备| 台中县| 广河县| 延吉市| 屏南县| 股票| 五指山市| 贵溪市| 清水县| 淮南市| 乐清市| 曲阳县| 梅州市| 丹凤县| 新巴尔虎左旗|