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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

4回答

7150閲覧

C言語 if(0)を書く意味

gamutabetai

総合スコア9

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

1グッド

0クリップ

投稿2019/11/02 13:28

int a=1,b=1;

if(0){
}else if(a<=1)
printf("a")
else if(b<=1)
printf("b")

のようなc言語プログラムでif(0)を書くことでどのような利点がありますか?

kyoya0819👍を押しています

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

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

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

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

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

Zuishin

2019/11/03 02:58

どこで見たコードですか?
gamutabetai

2019/11/03 03:01

大学の演習です。”if(0)の意味を考察せよ。”という課題が出ました。
Zuishin

2019/11/03 03:33

このコードだけだと利点は皆無ですね。 どのようなケースだと利点が出るのか、またはそれと同様な方法と比較してどうなのか、欠点は何か、コンパイル後のアセンブリコードはどうなるのか、など色々な切り口が考えられます。 http://unkode-mania.net/view/5029df5eeef2c75e32000014
asm

2019/11/03 07:26

回答未満の独り言ですが 「意味を考察」するだけなら利点を書く必要なく ただ、条件式0が偽と評価されif内は実行されない ってのが求められてる答えな気も・・・ (なお、Rubyだと真、PHPだと文字列の"0"も偽になる など言語間で比べるとなかなかツライ奴です)
guest

回答4

0

ベストアンサー

1に書き換えることでそのブロックを実行できるように/しないようにできる。ってことですな。

#ふつうはそんなことしないけど。

投稿2019/11/02 13:32

編集2019/11/02 13:45
y_waiwai

総合スコア88171

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

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

0

質問の趣旨からずれているかもしれませんが、過去に見たプログラミングテクニックです。

C

1 if(0){ 2err: // エラーリカバリを実行する。 3 4 } 5 6 // 本処理 7 8 // 何らかの回復可能なエラーを検出した 9 goto err; 10

正常時は実行しないブロック内にラベルを書いておき、異常時に飛んでくる。バッドプラクティスにされるかな。

投稿2019/11/03 02:54

xebme

総合スコア1109

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

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

0

サンプルプログラム、デバッグ途中とかだと思います。厳密には作った人しかわかりません。

当然ですが、プログラム実行時に当該ソース行は意味をなしません。例えば、動作の説明用とか後に変更予定のものを暫定的に作ったとかだと思いますよ。他には、「コメントのON/OFFを使ってソースコードを大修正する」というのもよく使う手です。

投稿2019/11/02 15:02

編集2019/11/02 15:05
HogeAnimalLover

総合スコア4853

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

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

Zuishin

2019/11/03 03:27

よく使いますか? /**/ や #if の方が後で掃除し易くて良さそうな気がしますし、git で事足りるような。
guest

0

else ifで統一するためでしょう。条件部のカラムがそろうというか、見た目だけですが。

C

1if(0){ 2}else if(a<=1){ 3 printf("a"); 4}else if(b<=1){ 5 printf("b"); 6}

C

1if(a<=1){ 2 printf("a"); 3}else if(b<=1){ 4 printf("b"); 5}

投稿2019/11/02 13:31

otn

総合スコア86324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問