前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【问题与思考】1+"1"=?

【问题与思考】1+"1"=?

作者头像
悟空聊架构
发布2018-05-18 12:54:34
8350
发布2018-05-18 12:54:34
举报
文章被收录于专栏:悟空聊架构 | 公众号

概述

在数学中1+1=2,在程序中1+1=2,而1+"1"=?

围绕着1+"1"的问题,我们来思考下这个问题。

 目录:

一、在.Net代码中

二、在JavaScript代码中

三、在SQLServer代码中

四、在PowerShell代码中

五、还有更多的语言值得我们去探讨

一、在.Net代码中

(1)代码如下所示:

代码语言:javascript
复制
Console.Write("例1:");
Console.WriteLine("1 + " + '"' + "1" + '"'+" = ?");
int a = 1;
Console.WriteLine("a = {0}", a);
Console.WriteLine("a 的类型:{0}", a.GetType());

string b = "1";
Console.WriteLine("b = " + '"' + "1" + '"');
Console.WriteLine("b 的类型:{0}", b.GetType());
 
Console.WriteLine("a + b = {0}",a+b);
Console.WriteLine("a + b 的类型:{0}", (a + b).GetType());
      
Console.WriteLine();
Console.WriteLine();

Console.Write("例2:");
Console.WriteLine("1 + '1' = ?");
Console.WriteLine("a = {0}", a);
Console.WriteLine("a 的类型:{0}", a.GetType());

char c = '1';
Console.WriteLine("c = " + "'1'");
Console.WriteLine("c 的类型:{0}", c.GetType());

Console.WriteLine("a + c = {0}", a + c);
Console.WriteLine("a + c 的类型:{0}", (a + c).GetType());

(2)运行结果:

(3)结论:

  在.Net代码中

  1. int类型和string类型进行"+"操作,int类型会默认强制转换为string类型,所以最后的结果是两个string类型进行字符串的拼接,所以结果是"1"+"1"="11";
  2. int类型和char类型进行"+"操作,char类型会默认强制转换ASCII码对应的值(char类型'1'对应的ASCII码的值为49),且值为int类型,所以最后的结果是两个int类型进行字符串的相加,所以结果是1+49=50;

 (4)附录一:ASCII码表

二、在JavaScript代码中

(1)代码如下所示:

代码语言:javascript
复制
<html>
<head>
    <script>
            
        //例1:1 + "1" = ?
        var a = 1;
        var b = "1";
        var result = a + b;
        alert(result);

        //例2:1 + '1' = ?
        var c = '1';
        var result = a + c;
        alert(result);

        //例3:1 + 'a' = ?
        var c = 'a';
        var result = a + c;
        alert(result);

    </script>
<body>

</body>
</html>

(2)运行结果:

例1、例2运行结果都是11,如图1

图1

例3运行结果是1a,如图2

图2

图3

(3)结论:

  在JavaScript代码中

  1. 根据图三可以判断,JavaScript没有char类型;
  2. int类型和string类型进行"+"操作,int类型会默认强制转换为string类型,所以最后的结果是两个string类型进行字符串的拼接,所以结果是"1"+"1"="11";
  3. 这种形式的'1'会被解析为string类型,所以1+'1'的结果和1+"1"的结果相同。

三、在SQLServer代码中

(1)代码如下所示:

代码语言:javascript
复制
----例1
--declare  @a int 
--declare  @b char
--set @a=1
--set @b='1'
--print '例1结果:'
--print @a+@b --2

----例2
--declare  @c char
--set @c='12'
--print '例2结果:'
--print @a+@c --2

----例3
--declare  @d char
--set @d='d'
--print '例3结果:'
--print @a+@d --在将 varchar 值 'd' 转换成数据类型 int 时失败。

--例4
print '例4结果:'
select 1+'1' as '例4结果'

--例5
print '例5结果:'
select 1+'12' as '例5结果'

(2)运行结果:

(3)结论:

  在SQL Server代码中

  1. 没有string这种类型;
  2. 由例1、例2可以推出:int类型的变量和char类型进行"+"操作,char类型会默认强制转换第一个字符为int类型,后面的字符舍去,所以最后的结果是两个int类型进行字符串的相加,所以结果是1+'1'=2,1+'12'=2;
  3. 由例3可以推出,int类型的变量和char类型进行"+"操作,当char类型里面的值不是由0~9这几个数字组成时,将会报错:在将 varchar 值 'd' 转换成数据类型 int 时失败;
  4. 由例4、例5可以推出:用select查询时,int类型的变量和char类型进行"+"操作,char类型会默认强制转换int类型,所以最后的结果是两个int类型进行相加,所以查询出来的集合是1+'1'=2,1+'12'=13。

四、在PowerShell代码中

(1)代码如下所示:

代码语言:javascript
复制
#例1 1+'1'=?
$a=1
$b='1'
$a+$b

#例2 1+'12'=?
$a=1
$b='12'
$a+$b

#例3 1+"1"=?
$a=1
$c="1"
$a+$c

#例3 1+"a"=?
$a=1
$d="a"
$a+$d

(2)运行结果:

(3)结论:

  在PowerShell代码中

  1. 没有char类型,''和""是同一种标识字符串类型的标识符。
  2. int类型和string类型进行"+"操作,string类型会默认强制转换为int类型,所以最后的结果是两个int类型进行相加,所以结果是1+'1'=2,1+"1"=2,1+"12"=13;

五、还有更多的语言值得我们去探讨

如下图所示: 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-06-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 一、在.Net代码中
    • (1)代码如下所示:
      • (2)运行结果:
        • (3)结论:
          •  (4)附录一:ASCII码表
          • 二、在JavaScript代码中
            • (1)代码如下所示:
              • (2)运行结果:
                • (3)结论:
                • 三、在SQLServer代码中
                  • (1)代码如下所示:
                    • (2)运行结果:
                      • (3)结论:
                      • 四、在PowerShell代码中
                        • (1)代码如下所示:
                          • (2)运行结果:
                            • (3)结论:
                            • 五、还有更多的语言值得我们去探讨
                            相关产品与服务
                            云数据库 SQL Server
                            腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档