JDBな人生  専門的なことから日常的なことまで~ まぁ自由きままに書いていきます。
2017年10月 / 09月<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>11月

アクセスランキング

[ジャンルランキング]
コンピュータ
329位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
50位
アクセスランキングを見る>>

ゼロ除算?

少し前に、メディアで「小学校教員が生徒に9 / 0 = 0と教えている?」みたいなことが話題になりました。
実際は間違いではありますが、いずれ学びなおすのであれば、そのような教え方もありといえばありなんじゃないかなあとも思います。

まあそれが適切か不適切かはおいておいて、先日ふと、0除算はプログラミングではどう扱われるのか?という疑問を抱きました。過去の経験では、C++は0除算で止まる、JavaScriptは止まらない、ということがわかっていましたが、今回、自分の主に使う言語について挙動をまとめてみました。

赤字は例外の発生&中断、青字は出力結果の値です。

Perl
my $a = 5;
my $b = 0;
print $a / $b;

Illegal division by zero

JavaScript
var a = 5;
var b = 0;
alert(a / b);

Infinity

ActionScript 3
var a:int = 5;
var b:int = 0;

trace(a / b);

Infinity

VB.NET
Dim a As Integer = 5
Dim b As Integer = 0

Console.WriteLine(a / b)

+∞

Visual C++
int a = 5;
int b = 0;
printf("%d",a / b);

Integer division by zero

Visual C#
int a = 5;
int b = 0;
Console.WriteLine(a / b);

System.DivideByZeroException
0 で除算しようとしました。

Java
int a = 5;
int b = 0;
System.out.println(a / b);

Exception in thread "main" java.lang.ArithmeticException: / by zero


結果、JavaScriptとActionScriptとVB.NETは処理が継続しましたが、他の言語は例外発生&中断ということがわかりました。
まあ、ゼロ除算が起こるようなコードは書くものではないと思いますが…

「不良の原因がゼロ除算だった」なんてかっこ悪いことの起こらないよう、頭の片隅に置いておくと良いかもしれません。
 


 
   プログラミング/開発全般    TB(0)    CM(0)    EDIT    ページ↑

コメント投稿


 管理者だけに表示

コメント

トラックバック

この記事へのトラックバック:

プロフィール

JDB Luigi

Author:JDB Luigi
どこにでもいるようなありふれた人間・・・という訳でもなく、かと言って怪しい宗教を信仰する変人という訳でも無い。

基本的に掲載しているコード等は煮ていただいても焼いていただいても結構ですが、利用は自己責任にてお願いいします。
また、バグ・アドバイス等もしあればよろしくお願いします。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。