- 締切済み
教えてください
do~while文のループの中にの処理に対して質問させください。 do{ if (Count!=ReceivedCount){ Count = ReceivedCount; } if (ReceiveData_i==0x51){ break; } }while(ReceiveData_i!=0x51); print("\r\nBye Bye!!\r\n"); 1: Count = ReceivedCountの処理が実行されない。 Count!=ReceivedCountの値は、違います。 2:ReceiveData_i==0x51で、ReceiveData_iが0x51なのに、 breakが実行されない。 3:do~while文から抜け出せないので、print文が実行されない。 ReceiveData_iが0x51です。 何か考えられる原因はありますでしょうか。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Alice022
- ベストアンサー率37% (3/8)
ざっと見た感じではコード記述に問題ない気がするのですが、処理判断で内容が該当しているのに処理が行われないという点が気になります。 例えば、ReceiveData_iが0x51であるのにbreakが実行されない。 確認したいのですが、ReceiveData_iは0x51であるということですが、デバッガのウォッチで見ているときの表示は16進でしょうか?10進表示で見てしまっているということはないのですよね?
- tatsu99
- ベストアンサー率52% (391/751)
Count ReceivedCount ReceiveData_i 上記の変数を定義している箇所を提示してください。
- asuncion
- ベストアンサー率33% (2127/6289)
> Count!=ReceivedCountの値は、違います。 日本語として通じないのですけれど、どういう意味でしょうか? Countの値とReceivedCountの値とが異なる、という意味でしょうか? もしそういうことなら、どのようにして確かめられましたか? >2:ReceiveData_i==0x51で、ReceiveData_iが0x51なのに、 ReceiveData_iの値が0x51であることを、どのようにして確かめられましたか?
- zwi
- ベストアンサー率56% (730/1282)
ReceiveData_iとかの値は、whileループ内で更新してないけど何処で更新してますか? もし更新が割り込みやスレッドなら、ReceiveData_iにはvolatileが付いてますか?
補足
>Count!=ReceivedCountの値は、違います。 Countの値とReceivedCountの値とが異なるという意味です。 >2:ReceiveData_i==0x51で、ReceiveData_iが0x51 デバッガで値を確認しました。