こんにちは.初めて利用するので失礼があったらすみません.
急ぎではないのでお時間がある方でご存じの方がいらっしゃれば教えてください
C++を勉強中のコード初心者です.
OS : Windows10
コンパイラ:gcc
以下のコードで実行すると
次のような出力になることを知りました
a0
a1
a2
b3
a4
そこで,
のような書き方があることを初めて知ったので
使うかどうかは置いといて,知識として知っておきたいなと思ったのですが
このような書き方を紹介しているWebページをご存じの方がいらっしゃったらご教授願いたいです
いろいろ検索してみたのですが,何というキーワードを検索すればいいのかわかりませんで......
2択の文字出力時の場合分け
Re: 2択の文字出力時の場合分け
//このpに対して…
const char *p = "ab";
//こうしたら,'a' と 'b' が表示されるよね
std::cout << p[0] << std::endl;
std::cout << p[1] << std::endl;
//---
//っていうのと,まぁ,同じような話で,これでも 'a' と 'b' が表示されるよね.
// "ab" の型は多分,const char[3] だろうから,普通に配列の [0] と [1] を出力しているだけだ.
std::cout << "ab"[0] << std::endl;
std::cout << "ab"[1] << std::endl;
OKならば,あとは
の部分がどうなるか? だけが問題になるよね.
配列の index の部分: としては,int が必要(ってことで合ってるかな?)なんだけど,そこに書かれているのは
(i==3) で,これは bool になるから,bool から int へ暗黙的な型変換が行われるじゃないかな.
で,これが合ってれば,後は bool から int の変換ってどうなるのか? っていう.
bool → int の変換のルールについては,ググれば見つかるかと思うけど,true は 1 に,false は 0 になるハズ.
---
以上をまとめると,
index の部分は i が 3 のときだけ 1 で,あとは 0 になるわけだから,そのような出力結果になる,と.
Re: 2択の文字出力時の場合分け
> 何というキーワードを検索すればいいのか
っていう点に関しては,例えば…
・"ab" の型については「C++ 文字列リテラル 型」
・配列の index の型については「C++ 配列 index 型」
・bool から int へのキャストについては「C++ bool int キャスト」
…とか,愚直にトライしてみればいけるのではないかな,と.
「仕様」みたいな単語を入れてみても良いかもしれない.
っていう点に関しては,例えば…
・"ab" の型については「C++ 文字列リテラル 型」
・配列の index の型については「C++ 配列 index 型」
・bool から int へのキャストについては「C++ bool int キャスト」
…とか,愚直にトライしてみればいけるのではないかな,と.
「仕様」みたいな単語を入れてみても良いかもしれない.
Re: 2択の文字出力時の場合分け
>> usao 様
返信ありがとうございます.感動しました.
まず,早速の返信,そしてわかりやすい説明まことにありがとうございます.
内容について,恥ずかしながら, この出力結果が
a
b
となることを存じ上げませんで,これを拝見した瞬間霧が晴れた思いです.
文字列の直後に配列の添え字指定ができるのですね.
普段C++ばかりで,char型の扱いがピンとこないことが多いのですが,今回もその問題だったように思います.
素早く丁寧なご説明いただき本当にありがとうございました.
返信ありがとうございます.感動しました.
まず,早速の返信,そしてわかりやすい説明まことにありがとうございます.
内容について,恥ずかしながら, この出力結果が
a
b
となることを存じ上げませんで,これを拝見した瞬間霧が晴れた思いです.
文字列の直後に配列の添え字指定ができるのですね.
普段C++ばかりで,char型の扱いがピンとこないことが多いのですが,今回もその問題だったように思います.
以降の内容は全く問題なく理解できます.っていうのはOKであろうか?
OKならば,あとは
素早く丁寧なご説明いただき本当にありがとうございました.