2009年7月15日水曜日

本日のerror ver 2009/7/15

本日のerrorというより昨日のerrorなんですけど
皆さんはこのスクリプトの結果が何になると思いますか?

goto *@f
#defcfunc is_digit int h
if h=='0'{ ff=1}
if h=='1'{ ff=1}
if h=='2'{ ff=1}
if h=='3'{ ff=1}
if h=='4'{ ff=1}
if h=='5'{ ff=1}
if h=='6'{ ff=1}
if h=='7'{ ff=1}
if h=='8'{ ff=1}
if h=='9'{ ff=1}
if ff!=1:return -1
return 1
*@
logmes str(is_digit('1'))
logmes str(is_digit('a'))

結果は1\n1です
予想したとおりの結果にならないのはffがグローバル変数だからです
goto *@f
#defcfunc is_digit_b int h
ff=0
if h=='0'{ ff=1}
if h=='1'{ ff=1}
if h=='2'{ ff=1}
if h=='3'{ ff=1}
if h=='4'{ ff=1}
if h=='5'{ ff=1}
if h=='6'{ ff=1}
if h=='7'{ ff=1}
if h=='8'{ ff=1}
if h=='9'{ ff=1}
if ff!=1:return -1
return 1
*@
logmes str(is_digit_b('1'))
logmes str(is_digit_b('a'))

このようにきちんとffに0を代入すると期待通りの結果になります
ffがグローバル変数だということに気付かず30分くらい試行錯誤しました

0 件のコメント: