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!