首页 > 其他 > 详细

字符串中数字与整型数字的转化

时间:2021-05-15 18:58:45      阅读:8      评论:0      收藏:0      [点我收藏+]

ASCLL码

整数0的ASCLL码为48;
A-Z:65-90;
a-z:97-122;

前言

遇到这样的一道语法题
技术分享图片
技术分享图片

类似的,表达式的求值,例如:1+2 。如果用整型数组储存,那么字符就不会显示;如果用字符数组储存,那么‘1’和1又不相等。到底怎么合理的转化而又不增加繁琐的判断呢?
看到这样的一段代码

//代码片段
c -= ‘0‘;			//将字符转化成对应数值

到底是怎么回事,仔细想了想,也就明白了。

转换

其实在字符中的‘1’~‘9’其对应的ASCII码值并不是1- 9,而是:
技术分享图片
可以发现,‘1’ - ‘0’ 对应的ASCII码值为1;
‘2’ - ‘0’ 对应的ASCII码值为2 ;…以此类推,字符串中的数字可以近似表示为‘x’ - ‘0’ = x (其中x为0 ~ 9 中的一个)。

代码实现

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
	int ch;
	long long num = 0;
	long long temp;
	int is_overflow = 0;

	const int max_int = pow(2, sizeof(int) * 8) / 2 - 1;
	const int min_int = pow(2, sizeof(int) * 8) / 2 * (-1);


	cout << "请输入等待转换的字符串:";
	do
	{
		ch = getchar();
		if (ch >= ‘0‘&&ch <= ‘9‘)
		{
			temp = 10 * num + (ch - ‘0‘);
			if (temp > max_int || temp < min_int)
			{
				is_overflow = 1;
				break;
			}
			else
			{
				num = temp;
			}
		}
		else
		{
			if (num)
			{
				break;
			}
		}
	}
	while (ch != ‘\n‘);
	if (is_overflow)
	{
		cout << "数值超出范围,结果未定义" << endl;

    }
	else
	{
		if (!num)
		{
			cout << "并未找到任何数值" << endl;
		}
		else
		{
			cout << "结果是" << num << endl;
		}
	}

	system("pause");
	return 0;
}

字符串中数字与整型数字的转化

原文:https://www.cnblogs.com/Adalight/p/14771195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!