在数学中1+1=2,在程序中1+1=2,而1+"1"=?
围绕着1+"1"的问题,我们来思考下这个问题。
目录:
一、在.Net代码中
二、在JavaScript代码中
三、在SQLServer代码中
四、在PowerShell代码中
五、还有更多的语言值得我们去探讨
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());
在.Net代码中
<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>
例1、例2运行结果都是11,如图1
图1
例3运行结果是1a,如图2
图2
图3
在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结果'
在SQL Server代码中
#例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
在PowerShell代码中
如下图所示: