回答編集履歴

4

追記

2018/11/22 09:43

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -152,6 +152,48 @@
152
152
 
153
153
 
154
154
 
155
+ コメントを受けて
156
+
157
+ ---
158
+
159
+ ```
160
+
161
+ In function 'complex f(const complex&)':
162
+
163
+ warning: left operand of comma operator has no effect [-Wunused-value]
164
+
165
+ complex s = (1.0, 0.0);
166
+
167
+ ^~~
168
+
169
+ In function 'complex df(const complex&)':
170
+
171
+ warning: left operand of comma operator has no effect [-Wunused-value]
172
+
173
+ complex s = (3.0, 0.0);
174
+
175
+ ^~~
176
+
177
+ In function 'int main()':
178
+
179
+ warning: left operand of comma operator has no effect [-Wunused-value]
180
+
181
+ xn = (0.5, 0.5);
182
+
183
+ ^~~
184
+
185
+ warning: format '%lf' expects argument of type 'double', but argument 2 has type 'complex' [-Wformat=]
186
+
187
+ printf("ans=%lf\n", xn1);
188
+
189
+ ```
190
+
191
+
192
+
193
+ まず警告を全部解消しましょう。
194
+
195
+
196
+
155
197
  コードの書き方について
156
198
 
157
199
  ---

3

追記

2018/11/22 09:43

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -146,6 +146,12 @@
146
146
 
147
147
 
148
148
 
149
+ 見てわかるように、インスタンスが必要以上に生成されています。
150
+
151
+ `MyClass c2{0.5, 0.5}`の方が無駄が無いです。
152
+
153
+
154
+
149
155
  コードの書き方について
150
156
 
151
157
  ---

2

追記

2018/11/22 09:26

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -64,6 +64,88 @@
64
64
 
65
65
 
66
66
 
67
+ というか、[std::complex](https://cpprefjp.github.io/reference/complex/complex.html)使えば良いんじゃないですかね。
68
+
69
+
70
+
71
+ 実験
72
+
73
+ ---
74
+
75
+ ```C++
76
+
77
+ #include <iostream>
78
+
79
+
80
+
81
+ class MyClass {
82
+
83
+ public:
84
+
85
+ MyClass() {
86
+
87
+ std::cout << "引数なし\n";
88
+
89
+ }
90
+
91
+ MyClass(double d) {
92
+
93
+ std::cout << "引数は一つ\n";
94
+
95
+ }
96
+
97
+ MyClass(double d1, double d2) {
98
+
99
+ std::cout << "引数は二つ\n";
100
+
101
+ }
102
+
103
+ };
104
+
105
+
106
+
107
+ int main() {
108
+
109
+ std::cout << (1, 2, 3, 4) << "\n";
110
+
111
+
112
+
113
+ MyClass c1, c2, c3;
114
+
115
+ c1 = (0.5, 0.5);
116
+
117
+ c2 = {0.5, 0.5};
118
+
119
+ c3 = 0.5;
120
+
121
+ }
122
+
123
+ ```
124
+
125
+
126
+
127
+ **実行結果** [Wandbox](https://wandbox.org/permlink/ZuA7e0nVns4o0NXX) 『//』以降は回答に際して加筆
128
+
129
+ ```
130
+
131
+ 4 // (1, 2, 3, 4)の評価値は4
132
+
133
+ 引数なし // MyClass c1
134
+
135
+ 引数なし // MyClass c2
136
+
137
+ 引数なし // MyClass c3
138
+
139
+ 引数は一つ
140
+
141
+ 引数は二つ
142
+
143
+ 引数は一つ
144
+
145
+ ```
146
+
147
+
148
+
67
149
  コードの書き方について
68
150
 
69
151
  ---

1

追記

2018/11/22 09:22

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -61,3 +61,15 @@
61
61
  単に (0.5, 0.5) と書いた場合、カンマ演算子が適用され 0.5 が返されます。
62
62
 
63
63
  そのためc1とc3の結果が同じになるのです。
64
+
65
+
66
+
67
+ コードの書き方について
68
+
69
+ ---
70
+
71
+ teratailには、コードを見やすく表示する機能があります。
72
+
73
+ 質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
74
+
75
+ ![C++](e378967f71829feb9e6187e5be60349f.gif)