在讲类型转换之前,我们先要理解下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)类型的更多相关文章

  1. C语言中强制类型转换总结

    C语言中强制类型转换总结  ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围 ...

  2. C语言中存储多个字符串的两种方式

    C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...

  3. C语言中的数组与字符串

    1. 数组与指针: 对于数组,需要注意两点:1, C语言中只有一维数组, 而且数组的大小必须在编译期就作为一个常数确定下来: 2. 对于一个数组,我们只能做两件事:确定数组的大小 和 获得指向该数组下 ...

  4. Go语言中其他数据与字符串类型的转换

    1 概述 Go语言是强类型语言,因此总会需要将字符串转成需要的类型.比如整型和字符串转换,字符串和布尔型的转换等.本文就介绍如何完成这些转换,以下是Go语言关于字符串转换的整理说明,主要是与切片类型的 ...

  5. C语言中数据类型转换的学习

    1. 整型和枚举类型数据的转换 测试代码如下: #include <stdio.h> typedef enum _E_TYPE_T {     E_TYPE_1 = -1,     E_T ...

  6. 【原创】go语言学习(三)字符串串、时间和日期类型

    目录 1.字符串串原理理解析2. 时间类型3. 日期类型 字符串串原理理解析 1.字符串串底层就是⼀一个byte数组,所以可以和[]byte类型互相转换2.字符串串之中的字符是不不能修改的,那怎么修改 ...

  7. C语言中的字符和字符串

    C语言在中常常出现字符和字符串,而一串字符或者字符串其实就是数组 字符数组的定义 char arr[]={'h','e','l','l','o','\0'}; 而定义字符串: char arr1[]= ...

  8. C语言中字符数组和字符串指针分析

    这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这 ...

  9. 关于C语言中变量类型转换

    今天在工作中遇到一个问题,而在解决问题的过程中,发现一段关于int 型变量(a)和char型(b)变量间类型转换的代码存在问题:一个值为255的int型变量a,强制类型转换并赋值给char型变量b后, ...

随机推荐

  1. vue二次实战

    vue爬坑之路 npm uninstall 模块名(删除指定模块) https://www.cnblogs.com/wisewrong/p/6255817.html vue快速入门 https://s ...

  2. idea 创建的spingmvc 引入jquery后jquery函数始终不执行的原因

  3. 如何确定 Hadoop map和reduce的个数--map和reduce数量之间的关系是什么?

    1.map和reduce的数量过多会导致什么情况?2.Reduce可以通过什么设置来增加任务个数?3.一个task的map数量由谁来决定?4.一个task的reduce数量由谁来决定? 一般情况下,在 ...

  4. 安装MongoDB(做成Windows服务)并加载C#驱动程序

    一 Mongodb简介: 通过查询网上的一些信息来介绍一下Mongodb的优势:MongoDB是一个面向文档的数据库,目前由10gen开发并维护,它的功能丰富,齐全,完全可以替代MySQL.在使用Mo ...

  5. python数据结构与算法第十天【插入排序】

    1.插入排序的原理 2.代码实现 def insert_sort(alist): # 从第二个位置,即下标为1的元素开始向前插入 for i in range(1, len(alist)): # 从第 ...

  6. Java中的super()使用注意

    1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)3)super: 它引用当前对象的 ...

  7. border-color的深入理解

    .className{ width:100px;height:100px; border:100px solid; border-color: red green blue orange; } 最终的 ...

  8. How to create ISO on macOS

    hdiutil makehybrid -iso -joliet -o test1.iso /users/test/test1

  9. 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 ...

  10. 创建一个UWP 打包签名

    Create a certificate for package signing 2017/2/8 3 min to read [ Updated for UWP apps on Windows 10 ...