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

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

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

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

582閲覧

この記述方式の名前を教えていただきたいです

fk_beginner

総合スコア16

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/12/22 14:36

編集2021/12/22 15:11

ネット上で下のようなコードを見つけました。
どうやら大括弧内[]の条件に当てはまらないときのみ", "を出力しているようなのです。このような書き方について調べようとしたのですがそもそも名前やどういった機能を利用しているのかわからなかったので教えていただきたいです。

#include <iostream> #include <set> using namespace std; int main(void){ int N=10; set<int>S; for(int i=0;i<N;i++)S.insert(i); for(auto val:S){ cout << val << ", "[val==*(--S.end())]; } }

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

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

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

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

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

jimbe

2021/12/22 15:06

c は関係無いようですので、 c のタグを外して頂けますか。
guest

回答3

0

要するに、文字列定数を配列として使用できることを利用して、添字に条件式を使うことで、条件が満たされる場合(最終要素の場合)は、添字が1となり、空白文字' 'を、満たされない場合は、添字が0となり、カンマ','を出力せよ、という命令になります。

一行で書くことで、逆に分かりにくくなっている(カンマと条件式の関係が逆なので)ので、私はまずこの書き方はしません。普通にif文か、使っても三項演算子です。

投稿2021/12/22 15:18

majiponi

総合スコア1720

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

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

fk_beginner

2021/12/22 15:23

確かに可読性が下がりますね... 書く時の参考にさせていただきます
jimbe

2021/12/23 03:40 編集

c の”高級アセンブラ”という面が見える書き方と思います。 配列・アドレッシング・条件式が実際にどうコンピュータ内で表現され動作しているかを理解している必要がありますので、利用しないまでも読めるかどうかだけで c ( ひいては現在のコンピュータ ) の理解度は高めに見られることになるのではないでしょうか。 (でもいわゆる高級言語から見れば結局「何変なことしてんの」と言われるんですけどね^^; )
guest

0

ベストアンサー

単に文字列を文字配列とし、条件式の結果を値として配列の添え字に使っているだけではないでしょうか。

投稿2021/12/22 15:09

jimbe

総合スコア12756

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

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

fk_beginner

2021/12/22 15:16

なるほど...true->1 false->0 をうまく使った書き方だったのですね ご回答ありがとうございます
guest

0

", "[なんたら]

文字列の後ろに角カッコをつける記述ですが、簡単に説明しておきますと、

char s[]=", ";
かんたら = s[なんたら];

と同じ、と考えるとわかりやすいかと。
C言語での文字列ってのは、文字配列である。
C言語での論理値は、整数の0と1である
ってのがポインツです

投稿2021/12/22 23:18

y_waiwai

総合スコア87800

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問