컴파일은 ANSI/ISOC99 를 (대부분) 지원하는 C 컴파일러 

         GCC 컴파일러 또는 LCC 컴파일러 (또는 기타 컴파일러)

를 쓰면 됩니다.

Visual C++ 2010 은 ANSI/ISOC99 를 지원하지 않습니다.

[참고] ANSI/ISOC99 (Wikipedia)

 

// Filename: testComplexISOC99.c
//
// Compile & Link: gcc -o  testComplexISOC99  testComplexISOC99.c
// Execute: ./testComplexISOC99
//
// Or
//
// Compile & Link: lc testComplexISOC99.c
// Execute: testComplexISOC99
//
// Or
//
// Compile: lcc -o testComplexISOC99.obj testComplexISOC99.c
// Link: lcclnk testComplexISOC99.obj
// Execute: testComplexISOC99


#include <stdio.h>
#include <complex.h>

int main(int argc, char** argv)
{
 float complex z1 = 3.0 + 4.0i;
 float complex z2 = 2.0 - 1.0i;
 float complex z3 = z1 + z2;
 float complex z4 = z1 - z2;
 float complex z5 = z1 * z2;
 float complex z6 = z1 / z2;
 float complex z7 = conjf(z1);
 // float arg = cargf(z1);
 float arg = carg(z1);     // for :CC-win32

    printf("z1 = %f + %fj\n", crealf(z1), cimagf(z1));
    printf("z2 = %f + %fj\n", crealf(z2), cimagf(z2));
    printf("So,\n");
    printf("z3 = z1 + z2 = %f + %fj\n", crealf(z3), cimagf(z3));
    printf("z4 = z1 - z2 = %f + %fj\n", crealf(z4), cimagf(z4));
    printf("z5 = z1 * z2 = %f + %fj\n", crealf(z5), cimagf(z5));
    printf("z6 = z1 / z2 = %f + %fj\n", crealf(z6), cimagf(z6));

    printf("z7 = conjf(z1) = %f + %fj\n", crealf(z7), cimagf(z7));
    // printf("arg = cargf(z1) = %f\n", arg);
    printf("arg = carg(z1) = %f\n", arg);  // for LCC-win32

    return 0;
}

/*
-------------------
Result of execution:
-------------------
z1 = 3.000000 + 4.000000j
z2 = 2.000000 + 1.000000j
So,
z3 = z1 + z2 = 5.000000 + 5.000000j
z4 = z1 - z2 = 1.000000 + 3.000000j
z5 = z1 * z2 = 2.000000 + 11.000000j
z6 = z1 / z2 = 2.000000 + 1.000000j
z7 = conjf(z1) = 3.000000 + -4.000000j
arg = carg(z1) = 0.927295
*/

 

 

 

Posted by Scripter
,