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

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

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

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

Q&A

解決済

4回答

542閲覧

C#でスペースと+の条件や意味が知りたい。

hillclub

総合スコア33

C#

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

0グッド

0クリップ

投稿2018/09/08 00:24

C#

1int a=10, b=20; 2Console.WriteLine(a+ "+" +b+ "=" +(a+b));

C#初心者なのですがこの書き方は正しいですか?
どこにスペースいれるべきかイマイチわかりません。

また、+が沢山あり混乱します。どの+がどういった意味か教えて頂きたいです。

よろしくお願いします。

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

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

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

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

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

guest

回答4

0

ベストアンサー

C#

1Console.WriteLine(a+ "+" +b+ "=" +(a+b));

正しいですが、その通りややこしいので今はこういう書き方は主流ではありません。
次のように書きます。

C#

1Console.WriteLine($"{a}+{b}={a+b}");

元のソースでスペースは見やすさのために入れているので、あってもなくても構いません。
また + は文字列同士の連結をする演算子で、"+" は + という文字そのものを表す文字列です。

###追記

  • は文字列同士の連結をする演算子と書きましたが、正確にはオブジェクト同士の加算をする演算子です。

何を持って加算とするかはそのオブジェクトによります。
たとえば文字列同士なら連結になりますし、数値同士ならそのまま足し算になります。

文字列と文字列でないオブジェクトを加算した場合にはどちらも文字列に直してから連結されることが多いですが、そうでない演算が定義されていることもあります。

投稿2018/09/08 00:37

編集2018/09/08 00:48
Zuishin

総合スコア28662

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

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

pepperleaf

2018/09/08 00:54

> Console.WriteLine($"{a}+{b}={a+b}"); 個人的には、そろそろ、分離したい長さ(要素数)。 一旦、 string s = $"{a}+{b}={a+b}"; もありかな、って気分です。 変数名が 一文字ですが、増えたら、ちょっと考えます。
hillclub

2018/09/08 05:33

回答有り難うございます。 ややこしかったのが、こんなに効率的なコードになるとは。 是非今後これで覚えたいです。 ちなみに、C#6.0から効率的にかけるようになったみたいですね? 私は独学で(教本としては猫でもわかるC#という本ですが) 去年、改訂版?がでたので最新情報だと思っておりました… 大変参考になりました。
Zuishin

2018/09/08 05:43

そうですね。それ以前は string.Format() を使っていました。 + をいくつも使うのは BASIC 流だと思います。
hillclub

2018/09/08 09:31 編集

お返事とBAで改めて感謝。 まず、ややこしく感じた事が間違いでなくて安心しました。 また、挿入文字列の他に新機能がある事に気付きました。 最初のうちに更新時の醍醐味が分かり感動したし、今後注意したいと思いました。
guest

0

+が沢山あり混乱します。どの+がどういった意味か教えて頂きたいです。

まず MSDN ライブラリを読みましょう。

と言っても探せないかもしれませんので、とりあえず「+ 演算子 (C# リファレンス)」からの抜粋を貼っておきます。

"+ 演算子は、単項演算子または二項演算子として機能します"

"単項 + 演算子は、すべての数値型に対してあらかじめ定義されています。数値型での単項 + 演算の結果は、単にオペランドの値になります"

"二項 + 演算子は、数値型と文字列型に対してあらかじめ定義されています。数値型の場合、+ は 2 つのオペランドの合計を計算します。オペランドの片方または両方が文字列型の場合は、オペランドの文字列表現が連結されます"

ライブラリのサンプルコード

class Plus { static void Main() { Console.WriteLine(+5); // unary plus Console.WriteLine(5 + 5); // addition Console.WriteLine(5 + .5); // addition Console.WriteLine("5" + "5"); // string concatenation Console.WriteLine(5.0 + "5"); // string concatenation // note automatic conversion from double to string } } /* Output: 5 10 5.5 55 55 */

上の通り分かりやすく書いてあります。次回は是非自分で探して読んでから質問することをお勧めします。その上で(ライブラリを読んでも分からない場合は)、何が分からないかを明確にして質問してください。

投稿2018/09/08 00:42

編集2018/09/08 03:31
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hillclub

2018/09/08 05:24

回答有り難うございます。 調べるとMSDNがよく出ますが初めてみる内容でした。 いきなり調べる能力でつまづくとは…参考になりました。
guest

0

この書き方は正しいですか?

ただしいです。

どこにスペースいれるべきかイマイチわかりません。

入れるべきところに決まりはありません。
基本的には見やすいように入れればよいです。

+が沢山あり混乱します。どの+がどういった意味か教えて頂きたいです。

スペースは実行に関係ないので、スペース以外を分解すると以下となります

  1. a <= 変数(中身は10
    • <= +演算子
  2. "+" <= 文字(中身は+)
    • <= +演算子
  3. b <= 変数(中身は20
    • <= +演算子
  4. "=" <= 文字(中身は=)
    • <= +演算子
  5. (a+b) <= 変数a+変数bなので(10+20) = 30

(数字) (+演算子) (文字)の結果は文字になるという仕様があるので
たとえば a+"+"の結果は "10+" という文字になります

それを踏まえて、上から順に実行すると

"10+20=30"という文字が求まります。

よって、Console.WriteLine(a+ "+" +b+ "=" +(a+b));
はConsole.WriteLine("10+20=30");という事になります

投稿2018/09/08 02:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hillclub

2018/09/08 05:22

質問に沿った回答有り難うございます。 分かりました!言葉にすると、aと"+"とb、と"="と(a+b)。 答えは30だからa+b=30と表示されるんですね。 演算子は接続子みたいなものですね。
guest

0

文字列が絡む加算は文字列の加算(連結)とされます
んで、文字列の加算の場合は、ToStringメソッドで暗黙的に文字列として扱われます
つまり、
a.ToString()+ "+" +b.ToString()+ "=" +(a+b).ToString()
ということになります

投稿2018/09/08 00:32

y_waiwai

総合スコア87800

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問