C语言中的类型转换——将字符串s转换为整数型(int)类型
在讲类型转换之前,我们先要理解下C语言中单引号和双引号的区别。
先讲双引号,双引号就是字符串,我们要证实我们的想法,我选择写一段代码看看开:
#include <stdio.h>
int main()
{
printf("hello,world1");
return ;
}
然后我们编译运行看看输出什么:
hello,world1
我们的字符串被运行了。我学过Python,前端,我的潜意识认为单引号('')的含义也是代表字符串。让我们试试
我们再写一段代码:
#include <stdio.h>
int main()
{
printf('');
return ;
}
然后我编译运行,看输出信息:
rgument is of type ‘int’
extern int printf (const char *__restrict __format, ...);
我们发现报错了。
从这里我们发现单引号和双引号是有区别的,我们再来写一段代码:
#include <stdio.h>
int main()
{
printf("%d",'');
return ;
}
然后我编译运行,看输出信息:
49
输出的并不是1,而是49。
我对这里很眼熟,有可能刚学习编程的人不知道这是什么。这个49就是ASCII码
00110001 | 49 | 31 | 1 |
这条信息的来源源自于:http://www.asciima.com/
自己去查就知道了。
通过我们的实践告诉我们,双引号是字符串,单引号是字符,输出的是ASCII码。并不是表面看到的那样。
现在我们理解了这个。
下面我们来看这么一句话,我相信学习过C语言的人肯定接触过[c-'0']
它到底是什么意思?怎么这么困扰?今天我们来揭开它的真实面纱。
我们还是来实践,用代码说话:
#include <stdio.h>
int main()
{
printf("%d",''-'');
return ;
}
这里都是单引号,我前面讲了,单引号输出对应的ASCII码,这里还是ASCII码吗?
我编译运行看下输出结果:
3
是不是有点惊讶。竟然是3。打开ASCII表,我们看到3的位置是51,0的位置是48。51-48=3,很合理。
下面我们开始讲解我们的类型转换,我直接上代码,不废话。
#include <stdio.h>
int atoi(char s[]) //定义atoi函数,函数()里面的是char类型的数组
{
int i,n=;
for(i=;s[i]>='' && s[i]<='';i++)
n=*n+(s[i]-'');
return n;
}
/*
限定s[i]中的值只能是字符串数字不能是字符串
*/ /*
第一次循环的时候:i为0,s[0]='1',n=0; n=10*0+('1'-'0')=1
第二从循环的时候:i为1,s[1]='2',n=1; n=1*10+('2'-'0')=12
第三次循环的时候:i为3,s[2]='3',n=12;n=12*10+('3'-'0')=123
循环三次,输出最终结果123
*/
int main()
{
printf("%d\n",atoi("")); //atoi函数调用
return ;
然后我们编译运行看看输出结果:
123
OK,就这样!
C语言中的类型转换——将字符串s转换为整数型(int)类型的更多相关文章
- C语言中强制类型转换总结
C语言中强制类型转换总结 ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围 ...
- C语言中存储多个字符串的两种方式
C语言中存储多个字符串的两种方式 方式一 二维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...
- C语言中的数组与字符串
1. 数组与指针: 对于数组,需要注意两点:1, C语言中只有一维数组, 而且数组的大小必须在编译期就作为一个常数确定下来: 2. 对于一个数组,我们只能做两件事:确定数组的大小 和 获得指向该数组下 ...
- Go语言中其他数据与字符串类型的转换
1 概述 Go语言是强类型语言,因此总会需要将字符串转成需要的类型.比如整型和字符串转换,字符串和布尔型的转换等.本文就介绍如何完成这些转换,以下是Go语言关于字符串转换的整理说明,主要是与切片类型的 ...
- C语言中数据类型转换的学习
1. 整型和枚举类型数据的转换 测试代码如下: #include <stdio.h> typedef enum _E_TYPE_T { E_TYPE_1 = -1, E_T ...
- 【原创】go语言学习(三)字符串串、时间和日期类型
目录 1.字符串串原理理解析2. 时间类型3. 日期类型 字符串串原理理解析 1.字符串串底层就是⼀一个byte数组,所以可以和[]byte类型互相转换2.字符串串之中的字符是不不能修改的,那怎么修改 ...
- C语言中的字符和字符串
C语言在中常常出现字符和字符串,而一串字符或者字符串其实就是数组 字符数组的定义 char arr[]={'h','e','l','l','o','\0'}; 而定义字符串: char arr1[]= ...
- C语言中字符数组和字符串指针分析
这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这 ...
- 关于C语言中变量类型转换
今天在工作中遇到一个问题,而在解决问题的过程中,发现一段关于int 型变量(a)和char型(b)变量间类型转换的代码存在问题:一个值为255的int型变量a,强制类型转换并赋值给char型变量b后, ...
随机推荐
- vue二次实战
vue爬坑之路 npm uninstall 模块名(删除指定模块) https://www.cnblogs.com/wisewrong/p/6255817.html vue快速入门 https://s ...
- idea 创建的spingmvc 引入jquery后jquery函数始终不执行的原因
- 如何确定 Hadoop map和reduce的个数--map和reduce数量之间的关系是什么?
1.map和reduce的数量过多会导致什么情况?2.Reduce可以通过什么设置来增加任务个数?3.一个task的map数量由谁来决定?4.一个task的reduce数量由谁来决定? 一般情况下,在 ...
- 安装MongoDB(做成Windows服务)并加载C#驱动程序
一 Mongodb简介: 通过查询网上的一些信息来介绍一下Mongodb的优势:MongoDB是一个面向文档的数据库,目前由10gen开发并维护,它的功能丰富,齐全,完全可以替代MySQL.在使用Mo ...
- python数据结构与算法第十天【插入排序】
1.插入排序的原理 2.代码实现 def insert_sort(alist): # 从第二个位置,即下标为1的元素开始向前插入 for i in range(1, len(alist)): # 从第 ...
- Java中的super()使用注意
1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)3)super: 它引用当前对象的 ...
- border-color的深入理解
.className{ width:100px;height:100px; border:100px solid; border-color: red green blue orange; } 最终的 ...
- How to create ISO on macOS
hdiutil makehybrid -iso -joliet -o test1.iso /users/test/test1
- Build 2017 Revisited: .NET, XAML, Visual Studio
For the next couple months we're going to revisit Build 2017, each post focusing on different aspect ...
- 创建一个UWP 打包签名
Create a certificate for package signing 2017/2/8 3 min to read [ Updated for UWP apps on Windows 10 ...