根據我已閱讀C99和更高版本支持float complex
,double complex
和long double complex
作爲複雜類型的文檔。但是,使用gcc -Wall -Wextra
時,此代碼在沒有警告的情況下編譯。C中'複雜'的默認類型
#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:9:5:警告:純 '_Complex' 需要類型說明符;假設'_Complex double'
查看clang output。
gcc bug現在在this link報告。 (不是由我。)
謝謝。你怎麼能告訴gcc假設雙重? – eleanora
使用GCC的[typeof](https://gcc.gnu.org/onlinedocs/gcc/Typeof.html)。 – usr
在這種情況下看起來像gcc中的錯誤。非常感謝。 – eleanora