__real__ 和 __imag__ 运算符(IBM 扩展)

XL C/C++ 扩展了 C99 和 C++ 标准,以支持一元运算符 __real____imag__。 这些运算符提供了抽取复杂类型的真实部分和虚部分的能力。 这些扩展已实现,以缓解使用 GNU C 开发的移植应用程序。

__real__ 和 __imag__ 运算符语法

读取语法图跳过可视语法图__real____imag__(变量标识 )
var_identifier 是先前声明的复杂变量的名称。 __real__ 运算符返回复杂变量的实部,而 __imag__ 运算符返回变量的虚部。 如果这些运算符的操作数是 lvalue ,那么可以在允许 lvalues 的任何上下文中使用生成的表达式。 它们在复杂变量的初始化以及作为对库函数 (例如 printfscanf ) 的调用的自变量 (对于复杂类型没有格式说明符) 时特别有用。 例如:
float _Complex myvar; 
__imag__(myvar) = 2.0f; 
__real__(myvar) = 3.0f; 
将复杂变量 myvar 的虚部分初始化为 2.0i ,将实部分初始化为 3.0,并且
printf("myvar = %f + %f * i\n", __real__(myvar), __imag__(myvar));
打印:
myvar = 3.000000 + 2.000000 * i