【发布时间】:2014-06-04 15:55:18
【问题描述】:
Matlab 的动态类型很弱,这就是导致这种奇怪行为的原因。我不明白到底发生了什么,因为这个结果真的让我很吃惊。
编辑:澄清一下,我所描述的显然是 Matlab 以 ASCII 格式存储字符的结果,cmets 中也提到了这一点。我对 Matlab 处理其变量的方式更感兴趣,特别是它如何以及何时将类型/标签分配给值。
谢谢。
'1'
是 matlab 中的 1×1 字符矩阵,
'123'
是一个 1×3 的字符矩阵。
正如所料,
1
返回一个 1×1 的双精度数。
现在如果我输入
'1' + 1
我得到 50 作为 1×1 双倍,如果我输入
'123' + 1
我得到一个 1×3 双倍
[ 50 51 52 ]
此外,如果我输入
'a' + 1
结果是
98
在 1×1 双精度中。
我认为这与 Matlab 如何以 ascii 形式存储字符变量有关,但它究竟如何处理这些?数据是否真正统一和标记,或者它是如何工作的?
谢谢。
【问题讨论】:
-
猜测一下:'1' 字符的 ASCII 码是 49。49 + 1 是 50。
-
你为什么不在 Stack Overflow 上提问? meta.stackexchange.com/a/129632/165773
-
我了解ASCII编码,我对Matlab如何处理变量更好奇。这是语言设计的问题,而不是特定的编程问题,这就是我在这里问的原因。
-
@phi 这听起来像是特定于 Matlab 和 Matlab 的工作方式,这是一个技术问题。这就是 Stack Overflow 出现的原因。如果它是关于存在于多种语言中的更通用的语言特性,它可能与 P.SE 更相关。
-
@Panzercrisis 谢谢,我现在明白了。
标签: dynamic-typing type-systems matlab