Appending mixed types to strings seems a bit tricky. Is this the intended behaviour?
4 次查看(过去 30 天)
显示 更早的评论
I understand why I get different results, but is seems wrong. Is this intended?
'1' + "1" + 1
'1' + 1 + "1"
0 个评论
采纳的回答
Rik
2022-9-27
编辑:Rik
2022-9-27
It helps to do this step by step, which show that (while unintuitive), this is intended behavior.
Matlab evaluates code from left to right:
'1' + "1"
ans + 1
And your second example:
'1' + 1
ans + "1"
Because the first call to plus doesn't know you want to use a string as an operand later, this results in a conversion to double, and since the UTF-16 encoding of '1' is uint16(49), this results in double(50).
You can avoid this by putting in some parentheses:
'1' + ( 1 + "1" )
6 个评论
Stephen23
2022-9-27
"I never considered that code is strictly evaluated left to right."
This is explained in the MATLAB documentation: "Within each precedence level, operators have equal precedence and are evaluated from left to right". Plusses all have the same precedence.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!