Как вы печатаете комплексное/мнимое число в C?

#include <stdio.h>  
int main() {  
    //2+3j*98 ==> (2+294j)  
    printf("printf(\"%%i\",3j*58)\t%i\n",3j*58); // 0  
    printf("printf(\"%%f\",3j*58)\t%f\n",3j*58); // 0.00000000f  
    printf("printf(\"%%lf\",3j*58)\t%lf\n",3j*58); // 0.0000000  
    printf("printf(\"%%e\",3j*58)\t%e\n",3j*58); // 3.692273e-312  
    printf("printf(\"%%le\",3j*58)\t%le\n",3j*58); // 0.000000e+000  
    printf("printf(\"%%s\",3j*58)\t%s\n",3j*58); // (null)  
    return 0;  
}  

ВЫВОД:

printf("%i",3j*58)  0  
printf("%f",3j*58)  0.000000  
printf("%lf",3j*58) 0.000000  
printf("%e",3j*58)  3.692273e-312  
printf("%le",3j*58) 0.000000e+000  

Просто из любопытства, как вы печатаете мнимое число в C. «Обычные» варианты, похоже, не работают.


person Plakhoy    schedule 02.09.2013    source источник
comment
Если вы профессионал, вы можете попробовать создать свой собственный "%z" с помощью stdarg.h. :-)   -  person Don't You Worry Child    schedule 02.09.2013
comment
Как вы получили этот вывод? Где определяется 3j?   -  person luser droog    schedule 02.09.2013
comment
@luserdroog, нужно ли это где-то определять. Я думал, что j — это стандартный суффикс для комплексных чисел.   -  person Plakhoy    schedule 02.09.2013
comment
ха-ха @nishant, это хорошо. Я понятия не имею, как это сделать. Единственное, что я могу сделать с stdarg.h, это var-args. Хотите дать несколько указателей (без каламбура)?   -  person Plakhoy    schedule 02.09.2013
comment
@Segfault Это стандартная математическая запись. C использует * для умножения вместо сопоставления. См. этот вопрос.   -  person luser droog    schedule 02.09.2013