アプリ版:「スタンプのみでお礼する」機能のリリースについて

何故オーバーフローしてしまうのでしょうか

i = 0
c = 0
do While c < n
c = 2 ^ i
i = i + 1
Loop

質問者からの補足コメント

  • 書き忘れてました...
    nには任意の自然数(13とか24とか)を代入しています

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/12/06 09:49

A 回答 (3件)

オーバーフローとの事なのでnが文字列として認識されているのでしょう。



ループへ入る前に以下のコードを追加して見てください。

n = cint(n)

それと、このループはべき乗の後にiを加算しているので、
「n>0」のループ脱出時にはiが計算した際の値より1大きくなります。

それから揚げ足をとるようで大変恐縮ですが、
ループ条件を前判定しているため、「n=0」なら「i=0」でループを抜けます。

以上ご参考まで
    • good
    • 0
この回答へのお礼

なるほど、文字列になってたんですね
質問外についても細かくご指導頂きありがとうございます!

お礼日時:2017/12/06 12:02

「変数cのデータ型」や「nの値」が見えません。


データ型と変数の型の指定
http://www.officepro.jp/excelvba/basic/index4.html

素直に考えると、「n=0」ですので、i=1になった時点で「doーloop」を抜け出し、オーバーフローしないはずです。
    • good
    • 0

nって何?

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!