• ベストアンサー

C言語 b += a ? 1 : 0; の意味

Tacosanの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

正直なはなし, 今どきの普通のコンパイラなら b += a ? 1 : 0; と if (a) ++b; の間に速度差があるとは思えないですね. 読み易さは明らかに後者の方が優れているので, 前者のように書く必要はないと思います. ちなみに挙げ足とりになって申し訳ないのですが「式の値が 0 なら偽, 0 でなければ真」ですね>#4. あとついでにいうと, C において 5+3 == 8 という式が条件判断に使えるように, 5+3 という式も条件判断に使えます>#3. 前者は「条件が成り立てば 1, 成り立たなければ 0」を返すだけです. true とか false などという高尚なものは C にはありません (ちなみに Pascal にもない).

kenrobo
質問者

お礼

訂正して頂いてありがとうございます。

関連するQ&A

  • C言語について

    C言語でif文の条件指定の際、a > b && c > dとe > f && g > hのどちらかが成立すれば真という条件を書きたい場合、a > b && c > d || e > f && g > hという文では間違いですよね? どのように表記すればいいでしょうか? 解答よろしくお願いします。

  • if($a & $b) の意味

    phpでコーディングをしていますが、 初心者なので、よろしくお願いします。 コーディングの修正をしていますが、 if($a & $b) { 処理 } というコードが書かれたif文があり、 ifの()内の意味がわかりません。 C#では大体わかるのですが、 == なのか  != なのか インターネットで調べてもわからないので、 $a & $bの意味を教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 【C言語】if文の条件式について

    基本的な質問で申し訳ございません。 C言語のif文にて、以下の条件式がよくわかりません。 if(a & PAD_INPUT_UP){ b = b-4; } 「&」はどのような意味になるのでしょうか??

  • C言語 if文

    C言語のif文についての質問なのですが、ifを使い、条件Aの時は1のプログラムを実行、条件Bの時は2のプログラムを実行するようにしたとき、1と2のプログラム自体にもif文が使われています。その場合は、AとBの時のifと1と2に使われているifをどのように区別するのですか?(ちなみに1と2のif文については、それぞれ実行してみたところ動作可能でした。)説明が下手ですいません。初心者ですので、分かりやすく教えていただけると有難いです。

  • メモリセルと変数 ( a = b + cの意味)

    メモリセルと変数の関係について勉強しています。 動的(non-static)なローカル変数 bとcが宣言されたあと、 次の文が 出現したとします。 int a = b + c; 問題を解いてるのですが、問題によると、 この文章で 変数とメモリセルが結びつく 機会を二つ答えよ。 「変数aの値が aのメモリセルに保存される」というのが、一つだと考えるのですが、もう一つが思いつきません。 変数bは "int a = b + c;" の以前に、宣言されているので、bとbのメモリセルはこの文より前に結びついてます。 同様にcも この文より前にメモリセルと結びついています。 考えられるのは、b + c なのですが、 a = b + c の意味が 「b+c の計算結果の値を a のメモリセルに 保存する」 という 答えが二つになります。 a = b +c の意味はこれでいいのでしょうか? 文章がわかりにくくてすみません。 要はa = b + cの本質的意味が知りたいのです。

  • c言語でif文の処理について

    お世話になります。 C言語を勉強中なのですが AとBが一緒でなおかつCとDが一緒ならば というif文を作りたいのですがどのように記載すればいいのでしょうか? よろしくお願いいたします。

  • C言語における定数の使用方法

    こんにちは。 今日質問したいのは、タイトルにありますように、C言語における「定数」の使い方についてです。 私は現在、Visual C++を用いてC言語のプログラミングを勉強しているのですが、条件文(if文)に定数を用いてコーディングを行おうとしても、どうしてもエラー表示が出て、うまくコンパイルすることができません。 具体的には、 if(No>=1 && No<=10){ //具体的な処理部分 } というif文を、予めヘッダファイル内にて定義した定数 #define start 1; #define stop 10; を用いて次のように、 if(No>=start && No<=stop){ //具体的な処理部分 } コーディングしたいと考えています。 しかし、これをコンパイルするとエラーが発生してしまいどうにもうまくいきません。 また、定数ではなく数字で記述するとうまく回ります。 別のところで定数を、 wk = start; のように代入で使用しているのですが、そこではなにも問題がありません。 いったい何が間違っているのか、どのようにすればうまくいくのかを教えていただきたいと考え、書き込ませていただきました。 皆様、どうぞよろしくお願いします。

  • 「AとBとCとが・・・」と言いたいときに・・

    「AとBとCとが利用される。そのうちAはxxxである」ということを1文で言いたいときに、 A is used, which is xxx , B, C. という言い方は許されますでしょうか? このような形の文を見かけた記憶があるのですが、意味が違うとしたら、どういう意味になりますでしょうか。。?

  • C言語

    今、独学でC言語を勉強しているんですが。 大きく、 条件処理、繰り返し処理、配列、関数、2次元配列、文字列、構造体、ファイル処理、乱数、検索、バブル・ソート、ポインタ まではやったんですが(参考書で勉強)。 その次になにを勉強したらよく分からないので、 何を勉強するべきか教えてください。 将来的にこれっと言った作りたいものは決めていません。 お願いします。

  • A∪C=B∪Cのとき、A=B?

    Can you conclude that A=B if A, B, and C are sets such that (もしA, B, Cが下記のような集合であった場合、A=Bと結論付けられるか?) a)A∪C=B∪C? b)A∩C=B∩C? という問題なんですがヒントが欲しいです。 まず、何をすればよいのでしょうか? A=B=Xと仮定して、X∪C=X∪C、よし両辺とも等しい、終了(^_^)/~ …なんてことはないですね?(笑) Unionの定義を使って (X∈A∨X∈C)≡(X∈B∨X∈C)としたとしてもその次はどうすればいいのか…。 最初の一歩を教えて下されば、あとは自分でサラサラサラ~と解いてみせますので どうかその一歩を教えて下さい。