字符串相加的注意点

*下面的代码所示:

  • 代码1: 数字字符串参与运算的情况1
1 console.log(1 + "2" + "2");

很明显输出的是122,并且:

console.log(typeof (1 + "2" + "2"));

  输出的是string类型.上面的结果是毫无疑问的.

  • 代码2: 数字字符串参与运算的情况2
console.log(1 + +"2" + "2");
console.log(typeof (1 + +"2" + "2"));//string

  代码2中的第一个输出的是32, 因为+"2"会默认把字符串2转成number类型的2,所以再跟后面的字符串相加等到最终的32,并且,输出的仍然是字符串类型.

  • 代码3: 字符串参与运算
1 console.log( "A" - "B" + "2");//NaN2
2 console.log( "A" - "B" + 2);//NaN

  第一行输出的是NaN2,是因为 "A" - "B"输出的是NaN, 当NaN与字符相加的是,NaN会默认转成字符串类型,即"NaN",所以最终结果是NaN2

  第二行输出的是NaN,毫无疑问,只是为了跟第一行做对比.

  • 代码4: undefined 和 null 参与运算
1 console.log(undefined + 2);
2 console.log(null + 2);

  这里也涉及到了默认转换问题, undefined和null与数字相加会先默认转成数字类型,然后再进行相加.此时,我们需要看一个代码:

1 console.log(Number(undefined));//NaN
2 console.log(Number(null));//0

  结果就出来了,要记住,undefined默认转成数字类型是NaN,而null默认转成数字类型是0,这也是undefined和null的其中一个区别.

  所以,综上所述,代码4分别输出的是NaN 和 2.

时间: 2024-07-30 13:33:50

字符串相加的注意点的相关文章

C语言关于利用sscanf实现字符串相加减

#include<stdio.h>#include<string.h>void main(){ int a; int b; char str1[10] = "99999"; char str2[10] = "1111111"; char str[30]; int k = 0, i = 0, j = 0; for (k = 0; k < 30&&i<strlen(str1);){ str[k++] = str1[i+

T-SQL字符串相加之后被截断的那点事

本文出处:http://www.cnblogs.com/wy123/p/6217772.html 字符串自身相加, 虽然赋值给了varchar(max)类型的变了,在某些特殊情况下仍然会被“截断”,这到底是varchar(max)长度的问题还是操作的问题? 1,两个不超过8000长度的字符串自身相加,其结果长度超过8000之后会被截断: 不多说,直接上例子:定义一个字符串,赋值给 varchar(max)类型的变了,字符创长度为4040没有,任何问题. 把4040长度的字符串复制一份出来,也就是

php 整型 和 字符串相加

这个有好几种算法,例如: $tr = 'aaaaa'; 转成 0 $tr = 'a123aa'; 转成 0 $tr = '22aaa'; 转成 22 就是说,当匹配到字符串中,不为整形,会继续匹配,直到遇到字符,后面的全部转为0,与前面相加.  例1: $str = "123stringA";$str2 = "123xx797stringB"; $result = $str + $str2; //$result = 456(123+123)  例2: $str =

hdoj 1715 大菲波数 【字符串相加】

策略 :如题: 为什么昨天比赛的时候就没想出来, 模糊点 : char c = a: c += 1; //此时c = 'b': 注意:我是把最低位放到数组的较靠后的位置 AC by: SWS 链接http://acm.hdu.edu.cn/showproblem.php?pid=1715 代码: #include<stdio.h> #include<string.h> char a[300], b[300], c[300]; void f(int n){ strcpy(a, &qu

字符串相加 内存分配

问题: String s = "a" + "b" + "c";      这里,我们先不考虑"a","b","c"是放置在池中这个问题.      这个"+"操作符,java到底是怎么对待的? 一种说法是"a"是一个字符串对象,+"b"之后,又生成一个字符串对象,大概是"ab",+"c"之

[LeetCode] 415. Add Strings 字符串相加

Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. Note: The length of both num1 and num2 is < 5100. Both num1 and num2 contains only digits 0-9. Both num1 and num2 does not contain any leading zero.

LeetCode:字符串相加【415】

LeetCode:字符串相加[415] 题目描述 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零.你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式. 题目分析 这道题其实很简单,我们要搞清楚手工计算两数之和的流程.两数相加,和如果大于10的话就有进位,进位最高为1,默认为0,该位相加的和应为sum%

高精度问题之大数相加(原来就是用字符串相加,模拟手算这么简单!)

解题心的: 就是基本的一对一模拟手算..借助c++的string 不用逆序运算了.很方便的补0.  最后处理下前导0的问题. #include <iostream> #include <string> using namespace std; // 实现大数相加 结果存放在num中 void bigIntergerAdd(string &num, string add) { int goBit = 0; // 存放进位 // 先交换下顺序 加数的位数要比较少 if (num

[LeetCode] Add Strings 字符串相加

Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. Note: The length of both num1 and num2 is < 5100. Both num1 and num2 contains only digits 0-9. Both num1 and num2 does not contain any leading zero.