Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
about logical operator in if!
조회 수: 2 (최근 30일)
이전 댓글 표시
This is my code
y = input('choose','s');
if y == 'a1' | y == '1a'
disp('win')
else
disp('lost')
end
I would like to ask that when I use this, while I am run this program, I type only a or only 1 it also display win, like i type 1a or a1 . explain to me, or me have other ways to write the code, I do not need to add elseif more.
Thanks!
댓글 수: 0
답변 (1개)
Matt J
2014년 5월 25일
편집: Matt J
2014년 5월 25일
Use strcmp()
if strcmp(y,'a1') || strcmp(y,'1a')
disp('win')
else
disp('lost')
end
As for understanding what's happening currently, observe the result of each of your sub-expressions, and the vectors of logical data they produce, when y='1',
>> y='1';
>> y == 'a1'
ans =
0 1
>> y == '1a'
ans =
1 0
>> y == 'a1' | y == '1a'
ans =
1 1
Since (y == 'a1' | y == '1a') produces a vector of trues, the whole if statement evaluates to true. As mentioned in "doc if",
" An evaluated expression is true when the result is nonemptyand contains all nonzero elements (logical or real numeric). Otherwise,the expression is false. "
댓글 수: 5
Matt J
2014년 5월 26일
so mean we cannot use the simple condition, right? y == 'a1' | y == 'a1'
You can use these kinds of comparisons when they are appropriate to what you are doing. For example, suppose I want to remove all the spaces in a string,
>> y='This is a short string'; y(y==' ')=''
y =
Thisisashortstring
이 질문은 마감되었습니다.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!