他の方々の回答と被り、加えて少々長文になりますがご了承ください。<br>
<br>
この問題の原因は、コンパイラの判断による「暗黙の型変換」が起きたからです。<br>
<br>
a=a+0.2
変数aをユーザー側が明示的に初期化しない場合、HSP側が自動的に整数「0」で初期化します。<br>
なので上記の式は<br>
a=0+0.2
となってしまいます。<be>
整数型の「0」と実数型の「0.2」がかち合ってしまう事になるのですが、<br>
この時に型変換が行われるのです。<br>
<br>
型変換(キャスト)とは「ある型から別の型に変わる事」で、<br>
①+②という計算では右の②は左の①の型に自動的に変換されてしまいます。<br>
自動的に型変換されることを「暗黙の型変換」と言うのです。<br>
<br>
なので②「0.2」は①「0」の整数型へとキャストされ、小数点以下が切り捨てられて「0」になり、<br>
掲示されたソースコードを実行した結果が「0」になったわけですね。<br>
スレタイトルから察するにrepeatに原因があるんじゃないかと思われているようですが関係ありません。<br>
<br>
解決策としては他の方が示されている通り<br>
a=0.0
このように変数aを明示的に実数型として初期化する文をrepeatより前に記述して暗黙の型変換をさせないようにするか、<br>
a=0.2+a
のように順序を入れ替えて変数aを実数型へ暗黙の型変換させてやるか、<br>
a=double(a)+0.2
double関数を用いて変数aを明示的型変換してやるか、等が考えられます。<br>