ドキュメントによれば、私はC99以降を読んでfloat complex
、double complex
およびlong double complex
を複合型としてサポートしています。ただし、このコードはgcc -Wall -Wextra
を使用すると警告なしでコンパイルされます。C言語での 'complex'のデフォルトのタイプ
#include <stdio.h>
#include <complex.h>
int main() {
int a, b, c, d;
float re, im;
scanf("%d %d", &a, &b);
complex matrix[a][b]; /* <------ */
for(c=0; c<a; c++) {
for(d=0; d<b; d++) {
scanf("%f%fi", &re, &im);
matrix[c][d] = re + im * I;
}
}
for(c=0; c<a; c++) {
for(d=0; d<b; d++) {
printf("%.2f%+.2fi ", creal(matrix[c][d]), cimag(matrix[c][d]));
}
printf("\n");
}
}
- この有効なCですかそれはgccの風変わりですか?
complex matrix[a][b];
はどのタイプですか?
あなたが打ち鳴らすとそれをコンパイルする場合は、取得:
のmain.c:5:9警告:平野 '_Complexは、' 型指定が必要です。 と仮定すると '_Complex double'
clang outputを参照してください。
gccのバグがthis linkに報告されました。 (私ではありません)
ありがとうございました。 gccが二重と仮定する方法を教えてください。 – eleanora
GCCの[typeof](https://gcc.gnu.org/onlinedocs/gcc/Typeof.html)を使用します。 – usr
この場合、gccのバグのように見えます。本当にありがとう。 – eleanora