☆天Cのoverflow
てんC 「むふう、では次のプログラムはいかがでしょうか?」
#include <stdio.h>
int main(void)
{
printf("%d\n", 100000);
return 0;
}
これは難問ですよ。このプログラムのどこが間違っているか
おわかりになられますか?
ヒントはこのプログラムをコンパイルした結果、表示される
次のエラー文にあります。
(EAZY IDECの場合)
ファイル「C:/Users/solarplexus/AppData/Local/EasyIDEC/project/22222/main.c」の
「8行目」で記述エラーを発見しました。
unrecognized character \x81
(Visual Studioの2018場合)
エラー (アクティブ) E0065 ';' が必要です Project6 c:\Users\solarplexuss\source\repos\Project6\Project6\Source.cpp 8
エラー C2065 '}': 定義されていない識別子です。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 8
エラー C1075 左側の 中かっこ '{' に対応するものがファイルの最後まで検出されませんでした。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 4
(Visual Studioの2019場合)
エラー C1075 '{': 一致するトークンが見つかりませんでした Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 4
エラー (アクティブ) E0020 識別子 "}" が定義されていません Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 8
エラー (アクティブ) E0065 ';' が必要です Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 8
エラー C2065 '}': 定義されていない識別子です。 Project2 C:\Users\solar\source\repos\Project2\Project2\program1.cpp 8
さあ、みなさん、わっかるーかなー?」
solarplexuss 「むうぅ、なぜぇ。
プログラムは完璧なはずなのにぃ・・・
なぜぇ正しく実行されないのおん?
半角で打ち込まなければならない空白スペースを全角で
うちこんでいるわけでもないしぃ。」
てんC
「ヒント(EAZY IDECの場合)
のエラー文で表示されている
8行目と
unrecognized character 認識されない文字
ここに秘密があります。」
solarplexuss 「認識されない文字?・・・認識されない文字・・・?
認識されない愛・・・? ・・・・・???
なぜだー 」
てんC 「むふぅ」
solarplexuss
「たとえば全角文字なんかは認識されないよおな・・・
それで8行目となあるぅと・・・ 」
目をこらしてプログラムをみつめるsolarplexuss
solarplexuss 「・・・ あうっ 4行目の{ と8行目の}
なんかちがう・・・
なんと4行目の{ は半角英数字
8行目の} は全角英数字
になっている!!!」
てんC
「そうなんです。8行目の} を半角英数字の}にかえて
プログラムを実行すると
100000
続行するには何かキーを押してください_
とただしく表示されます。」
solarplexuss 「やるな、 べっぴんさん!」
てんC 「むっふふ。」
てんC 「おほん、ではでは、つぎのプログラム。」
嬉しそうなてんC。
てんC「 さあ、
#include <stdio.h>
int main(void)
{
printf("%d\n",1000000000000000000000);
return 0;
}
このプログラムはどこに問題があるでしょうか
答えは
printf("%d\n",1000000000000000000000);
の中の1000000000000000000000です。
このプログラムをコンパイルすると次のようなエラーが表示されることになります
(EAZY IDECの場合)
ファイル「C:/Users/solarplexus/AppData/Local/EasyIDEC/project/22222/main.c」の
「5行目」で記述エラーを発見しました。
integer constant overflow
(Visual Studioの場合)
エラー C2177 定数が大きすぎます。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 5
エラー (アクティブ) E0023 整数定数が大きすぎます Project6 c:\Users\solarplexuss\source\repos\Project6\Project6\Source.cpp 5
とエラーが表示されます。
英和辞典を調べてみると
integer とは英語で整数を表し
constantは日本語で定数をあらわし
overflowはイタリア語でも
あふれ; 《河川の》 氾濫.
オーバーフロー
桁あふれ《演算結果などが計算機の記憶・演算桁容量より大きくなること、
扱える数値の最大値を超えること。》
を意味しています。
つまり、この場合、定数である1000000000000000000000が
コンピューターの扱える数値を越えているということなのでしょう。」」
てんC 「・・・・・・・・」
solarplexuss 「 ありがとう、てんC,ところで次のプログラムも
どこかにエラーが
でるかもしれないんだが・・・・・
みてもらえないだろうか。」
てんC 「はい、何でしょう。」
次のプログラム
#include <stdio.h>
int main(void)
{
printf("いつも私たちをたすけてくれてありがとう。
あなたがいなければ、私たちはここまでたどりつくことは
できませんでした。感謝しています。あなたは私たちの一生の宝物です。
てんC\n");
return 0;
}
てんC 「・・・ありがとう・・・overflowです。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます