Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Concatenation 为什么这种连接会导致;208“;而不是",;20010“;_Concatenation - Fatal编程技术网

Concatenation 为什么这种连接会导致;208“;而不是",;20010“;

Concatenation 为什么这种连接会导致;208“;而不是",;20010“;,concatenation,Concatenation,而且当我试着打印“2001”时,结果是201???这真的很酷!语言是java,我刚刚试过。我不知道java可以读取小数以外的数字文字,但我从未真正尝试过。看起来是因为它认为010是一个8进制的数字,是八位字节的形式 010=8 01=1 所以20+010将给您208(不是28,因为它正在进行字符串连接,如果您输入(20+010),那么它将打印28) 20+01等于201 我也玩了一点,注意到如果你做20+0xA,它会给你2010(0xA是10的十六进制)。 这就是为什么会得到这些结果。010是一

而且当我试着打印“2001”时,结果是201???

这真的很酷!语言是java,我刚刚试过。我不知道java可以读取小数以外的数字文字,但我从未真正尝试过。看起来是因为它认为010是一个8进制的数字,是八位字节的形式

010=8
01=1
所以20+010将给您208(不是28,因为它正在进行字符串连接,如果您输入(20+010),那么它将打印28) 20+01等于201 我也玩了一点,注意到如果你做20+0xA,它会给你2010(0xA是10的十六进制)。
这就是为什么会得到这些结果。

010是一种八进制数表示法(以8为基数)

运算符+应用于最左边的操作数类型,该操作数是字符串,因此+是字符串串联的运算符

class Jspiders
{   

    public static void main(String[] args)
    {

        System.out.println("number is "+20+010);

    }
}

将给您一个不同的答案,包括两个数字的整数相加,(20+010)最左边的部分是一个数字。

请提供您的编程语言作为标记,然后System.out.println连接实际如何工作?println不进行任何连接。println()函数只有一个参数。它可以是整数,也可以是浮点,也可以是字符串。。。您提供的是一个字符串+int+int的单个参数。然后语言解释器将您的表达式转换为具有最左边操作数类型的单个操作数,并将结果传递给println。然后它还可以读取二进制…如果我输入以0开头的3位数字,而不是八进制,那么它会给出错误“int类型的文字080超出范围”,但当我输入02时,它会删除零n取2,它也会给出类似类型的错误。
System.out.println("number is "+(20+010));