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后, ...
随机推荐
- 简单理解laravel框架中的服务容器,服务提供者以及怎样调用服务
laravel被称为最优雅的框架,最近正在学习中,对于用惯了thinkphp.ci框架的人来说,服务容器.服务提供者,依赖注入这些概念简直是一脸懵逼.我花了些时间梳理了一下,也不敢确定自己说的是对 ...
- 建议3---理解Python与C语言的不同之处
我们都知道,Python的底层是用C语言实现的,但切忌用C语言的思维和风格来编写Python代码.Python与其他语言有很多不同,以下来进行简单的分析: (1)"缩进"与“{}” ...
- python爬虫之Gerapy安装部署
原创北航大才:https://cuiqingcai.com/5006.html NULL:http://www.infosec-wiki.com/?p=432737
- java学习之—栈
/** * 栈 * Create by Administrator * 2018/6/11 0011 * 上午 10:20 **/ public class StackX { private int ...
- 使用kubeadm安装kubenetes
一.环境 关闭防火墙和selinux 禁用swap master节点安装 #1.配置源 cd /etc/yum.repos.d/wget https://mirrors.aliyun.com/dock ...
- saltstack二
配置管理 haproxy的安装部署 haproxy各版本安装包下载路径https://www.haproxy.org/download/1.6/src/,跳转地址为http,改为https即可 创建相 ...
- qtp 自动货测试桌面程序-笔记(使用参数 parameters)
dtGlobalSheet:运行整个test时候使用的参数(心得:可以将公共使用的测试数据放于全局表格中,所有action脚本都可以使用同一个数据,如供应商.客户.商品) dtActionSheet: ...
- 页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式
页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式
- 搭建Hexo博客(三)—换电脑继续写Hexo博客
Hexo和GitHub搭建博客的原理是:Hexo将source下的md文件生成静态的html页面,存放到public目录中,这一步是由命令:hexo -g完成.接下来执行hexo -d命令,就将pub ...
- Django实现Rbac权限管理
权限管理 权限管理是根据不同的用户有相应的权限功能,通常用到的权限管理理念Rbac. Rbac 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问, ...