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后, ...
随机推荐
- HDU 2459 Maximum repetition substring
题目:Maximum repetition substring 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2459 题意:给你一个字符串,求连续重复出现 ...
- ORA-28000: the account is locked解决办法
ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob, ...
- input type=date时,时间数据回填,报错The specified value "2019-0404-18" does not conform to the required format, "yyyy-MM-dd".
<input autocomplete id="start-time" name="start_time" type="date" c ...
- Python OpenCV人脸识别案例
■环境 Python 3.6.0 Pycharm 2017.1.3 ■库.库的版本 OpenCV 3.4.1 (cp36) ■haarcascades下载 https://github.com/ope ...
- 如何使用命令从linux服务器下载文件到windows
1.直接使用命令从linux下载文件到windows //登录linux服务器导出mysql数据 mysqldump -hrm-2ze8mpi5i65429l1q.mysql.rds.aliyuncs ...
- SQL之CASE WHEN用法详解[1]
简单CASE WHEN函数: CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' E ...
- Python——Menu控件
一.参数说明: tearoff :分窗,0为在原窗,1为点击分为两个窗口 bg,fg : 背景,前景 borderwidth: 边框宽度 font : 字体 activebackgound ...
- Windows Server 2012 添加角色时出现 failed to open runspace pool
先把所有的Windows Server 2012的更新更新了.再来添加服务器角色.就不会再出现 The Server Manager WinRM plug-in might be corrupted ...
- WebStorm开发React项目,修代码之后运行的项目不更新
昨天遇到一个恶心的问题,我新建了一个React.js项目,想做一点关于Pc端的开发,习惯性的用了WebStorm,可是发现一个问题,就是代码修改之后,浏览器上根本不会刷新.然后,我把方向定位在没有正确 ...
- 吴恩达deeplearning之CNN—卷积神经网络
https://blog.csdn.net/ice_actor/article/details/78648780 个人理解: 卷积计算的过程其实是将原始的全连接换成了卷积全连接,每个kernel为对应 ...