簡體   English   中英

C ++中的復數示例不起作用

[英]complex number example in c++ not working

https://en.cppreference.com/w/cpp/numeric/complex )中的簡單示例代碼不起作用,我不知道為什么?

#include <iostream>
#include <iomanip>
#include <complex>
#include <cmath>

int main()
{
    using namespace std::complex_literals;
    std::cout << std::fixed << std::setprecision(1);

    std::complex<double> z1 = 1i * 1i;     // imaginary unit squared
    std::cout << "i * i = " << z1 << '\n';

    std::complex<double> z2 = std::pow(1i, 2); // imaginary unit squared
    std::cout << "pow(i, 2) = " << z2 << '\n';

    double PI = std::acos(-1);
    std::complex<double> z3 = std::exp(1i * PI); // Euler's formula
    std::cout << "exp(i * pi) = " << z3 << '\n';

    std::complex<double> z4 = 1. + 2i, z5 = 1. - 2i; // conjugates
    std::cout << "(1+2i)*(1-2i) = " << z4*z5 << '\n';
}

我正在與

c++ -o complex_numbers_example complex_numbers_example.cpp -std=c++11

並得到錯誤

complex_numbers_example.cpp: In function ‘int main()’:
complex_numbers_example.cpp:8:26: error: ‘complex_literals’ is not a namespace-name
     using namespace std::complex_literals;
                          ^
complex_numbers_example.cpp:8:42: error: expected namespace-name before ‘;’ token
     using namespace std::complex_literals;
                                          ^
complex_numbers_example.cpp:11:31: error: unable to find numeric literal operator ‘operator""i’
     std::complex<double> z1 = 1i * 1i;     // imaginary unit squared
                               ^
complex_numbers_example.cpp:11:31: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
complex_numbers_example.cpp:11:36: error: unable to find numeric literal operator ‘operator""i’
     std::complex<double> z1 = 1i * 1i;     // imaginary unit squared
                                    ^
complex_numbers_example.cpp:11:36: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
complex_numbers_example.cpp:14:40: error: unable to find numeric literal operator ‘operator""i’
     std::complex<double> z2 = std::pow(1i, 2); // imaginary unit squared
                                        ^
complex_numbers_example.cpp:14:40: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
complex_numbers_example.cpp:18:40: error: unable to find numeric literal operator ‘operator""i’
     std::complex<double> z3 = std::exp(1i * PI); // Euler's formula
                                        ^
complex_numbers_example.cpp:18:40: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
complex_numbers_example.cpp:21:36: error: unable to find numeric literal operator ‘operator""i’
     std::complex<double> z4 = 1. + 2i, z5 = 1. - 2i; // conjugates
                                    ^
complex_numbers_example.cpp:21:36: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
complex_numbers_example.cpp:22:43: error: ‘z5’ was not declared in this scope
     std::cout << "(1+2i)*(1-2i) = " << z4*z5 << '\n';
                                           ^

當我嘗試編譯時

cpp -o complex_numbers_example complex_numbers_example.cpp

它有效,但是執行時我得到

bash: ./complex_numbers_example: Permission denied

對於C ++我正在使用版本

c++ (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609

對於cpp我正在使用版本

cpp (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609

在C ++ 14中添加了復雜文字,請參閱https://en.cppreference.com/w/cpp/numeric/complex/operator%22%22i

您需要使用以下代碼進行編譯:

c++ -o complex_numbers_example complex_numbers_example.cpp -std=c++14

不要試圖用編譯cpp ,即P c ^P rocessor並會產生預處理的C ++文件不是一個可執行文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM