C99:用(+0 -0.0i)初始化_complex变量的正确方法

|| 在C99中用
(+0 -0.0i)
(在实数中为正零,在imag中为负零)静态初始化
float _complex
变量的正确方法是什么?
float _Complex a = _Complex_I * (-0.0); // this seems doesn\'t work
int main()
{
    printf(\"a = (%f %f) \\t(0x%016llx)\\n\",crealf(a),cimagf(a), *((long long*)&a));
}
PS。我需要静态初始化,因此无法使用
  __real__ a = 0.0; __imag__ a = 0.0;
    
已邀请:
不幸的是,确实没有。这就是C标准在C1x中包含
CMPLX
宏的原因。 由于我相信您正在使用GCC,因此您可能有兴趣关注此错误。特别是,如果您不介意生活在不断发展的边缘,则可以执行以下操作:
float _Complex a = { 0.0f, -0.0f };
(有关更多详细信息,请参见有关4月28日Jason Merrill提交的讨论)。我不确定,但您可能还需要提交一个单独的错误,以请求C前端对此功能的支持。     

要回复问题请先登录注册