zoukankan      html  css  js  c++  java
  • C语言中的类型转换——将字符串s转换为整数型(int)类型

              在讲类型转换之前,我们先要理解下C语言中单引号和双引号的区别。

              先讲双引号,双引号就是字符串,我们要证实我们的想法,我选择写一段代码看看开:

           

    #include <stdio.h>
    int main()
    {
       printf("hello,world1");
       return 0;
    }

     然后我们编译运行看看输出什么: 

    hello,world1

      我们的字符串被运行了。我学过Python,前端,我的潜意识认为单引号('')的含义也是代表字符串。让我们试试

      我们再写一段代码:

       

    #include <stdio.h>
    int main()
    {
       printf('1');
       return 0;
    }

     然后我编译运行,看输出信息:

    rgument is of type ‘intextern int printf (const char *__restrict __format, ...);

       我们发现报错了。

       从这里我们发现单引号和双引号是有区别的,我们再来写一段代码:

       

    #include <stdio.h>
    int main()
    {
       printf("%d",'1');
       return 0;
    }

     然后我编译运行,看输出信息:

      

    49

    输出的并不是1,而是49。

    我对这里很眼熟,有可能刚学习编程的人不知道这是什么。这个49就是ASCII码

    00110001 49 31 1

    这条信息的来源源自于:http://www.asciima.com/

    自己去查就知道了。

      通过我们的实践告诉我们,双引号是字符串,单引号是字符,输出的是ASCII码。并不是表面看到的那样。

      现在我们理解了这个。

       下面我们来看这么一句话,我相信学习过C语言的人肯定接触过[c-'0']

       它到底是什么意思?怎么这么困扰?今天我们来揭开它的真实面纱。

       我们还是来实践,用代码说话:

        

    #include <stdio.h>
    int main()
    {
      printf("%d",'3'-'0');
      return 0;
    }

    这里都是单引号,我前面讲了,单引号输出对应的ASCII码,这里还是ASCII码吗?

    我编译运行看下输出结果:

    3

     是不是有点惊讶。竟然是3。打开ASCII表,我们看到3的位置是51,0的位置是48。51-48=3,很合理。

    下面我们开始讲解我们的类型转换,我直接上代码,不废话。

    #include <stdio.h>
      int atoi(char s[])   //定义atoi函数,函数()里面的是char类型的数组
      {
        int i,n=0;
        for(i=0;s[i]>='0' && s[i]<='9';i++)
            n=10*n+(s[i]-'0');
       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
    ",atoi("123"));  //atoi函数调用
       return 0;

    然后我们编译运行看看输出结果:

    123

    OK,就这样!

        

  • 相关阅读:
    MMSkeleton 快速开始,使用 WebCam 测试
    【数据结构】用详细图文把「栈」搞明白(原理篇)
    详解|写完这篇文章我终于搞懂链表了
    如何掌握 C 语言的一大利器——指针?
    图示加代码 搞懂线性表(一)
    Kafka工作原理与工作过程
    Zookeeper的安装及集群搭建
    Linux中JDK安装
    Nginx性能调优
    Nginx配置--静态代理&反向代理&负载均衡&动静分离&虚拟主机
  • 原文地址:https://www.cnblogs.com/piaomiaohongchen/p/6416463.html
Copyright © 2011-2022 走看看