Các mã sau đây với VS2010 in 0
, trái với mong đợi của tôi:Tại sao abs (phức tạp <int>) luôn trả về 0?
#include <complex>
#include <iostream>
using namespace std;
int main(void)
{
complex<int> z(20, 200);
cout << abs<int>(z) << endl;
return 0;
}
Nó hoạt động tốt khi loại là double
.
Huh, tôi thậm chí không được phép sử dụng loại số thực của riêng mình? Thật đáng thất vọng. –
@ PaulManta- Vâng, tôi đoán là không. Tôi không biết tại sao lại như thế. – templatetypedef
Cảm ơn bạn đã trả lời. Quay trở lại 0, 200 hoặc 42 khi hành vi không xác định có thể thực sự theo một tiêu chuẩn, nhưng chắc chắn nó là một pitfall khá cho lập trình viên bình thường như tôi. – Artium