4.1 Complex assignment and promotion
Just as integers may be assigned to real variables, real variables may be assigned to complex numbers, with the result being a zero imaginary component.
int n = 5; // n = 5
real x = a; // x = 5.0
complex z1 = n; // z = 5.0 + 0.0i
complex z2 = x; // z = 5.0 + 0.0i4.1.1 Complex function arguments
Function arguments of type int or real may be promoted to type
complex. The complex version of functions in this chapter are only
used if one of the arguments is complex. For example, if z is
complex, then pow(z, 2) will call the complex verison of the power
function and the integer 2 will be promoted to a complex number with a
real component of 2 and an imaginary component of 0. The same goes
for binary operators like addition and subtraction, where z + 2 will
be legal and produce a complex result. Functions such as arg and
conj that are only available for complex numbers can accept integer
or real arguments, promoting them to complex before applying the
function.