答案是计算机不知道。绝大多数的强类型设计语言,包括会保存运行时类型的语言(如C#/Java等),都是通过代码上下文来确定类型,并由编译器贯彻实施的。例如我们先假设a和b是整型的,编译器看到代码:a + b
便会生成:add a, b
这样的指令,将这两个变量的值相加。而如果a和b是字符串,编译器会将同样的代码编译成:string.Concat( a, b )
这就是类型的奥秘,事实上计算机不知道这东西是什么类型,不同类型的变量产生了不同的行为完全是编译器在捣鬼。
计算机不知道。数据是程序员放的,指令是程序员调的。你往寄存器放了两个整数,然后调用一条浮点运算的指令,它就当你放的是浮点数。你叫他对条鱼执行飞,鱼就被扔出去飞了。
链接:https://www.zhihu.com/question/21634439/answer/18831221