質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

4684閲覧

voidでないメソッドでreturn値が無いのにコンパイルエラーにならないケース(Java)

wmt

総合スコア20

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2014/09/22 16:22

戻り値がvoidではないメソッドで、値をリターンする処理が無いのにコンパイルエラーにならないコードがありました。
コンパイラが以下のコードに警告を出さないのは何故でしょうか?

lang

1public int hogeMethod() { 2while(true) { 3//何かの処理 4} 5//戻り値に何も返さない 6}

上記のコードでwhileループ内にbreakを追加して以下のようにすると、コンパイルエラーが出るようになります。

lang

1public int hogeMethod() { 2while(true) { 3if(hoge) break; 4//何かの処理 5} 6//戻り値に何も返さない 7}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

C#の場合、値を返すべき関数で「return」などで抜け出すことがなく末尾まで到達可能であるとコンパイルエラーとなります。

そして、この到達可能性を判断する場合、定数式についてはコンパイル時に考慮しますので、while(true)があって中にbreakgotoなどがない場合、無限ループ以降は到達不可能だと解釈されます(最後でreturnしなくてもコンパイルエラーになりません)。

8.1 終了点と到達可能性

投稿2014/09/24 04:26

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wmt

2014/09/25 07:54

回答ありがとうございます!リンク先のページも参考になりました。
guest

0

なぜコンパイラが警告を出さないかの答えは以下のとおりです。

ご質問内に書いてあるコード例では、コンパイラ側ではこのコードが間違っているという証拠がなく、判断ができないからです。

投稿2014/09/22 22:52

buffalo_suzuki

総合スコア156

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問