2017-02-17 1 views
2

Mir wurde gesagt, dass "% a" in C printf verwendet würde hexadezimale Format einer Zahl angezeigt. Um es zu testen, ausdrucken ich die Darstellung von 2^10:printf mit% a scheint keine hexadezimale Zahl zu erzeugen

printf ("%a", pow(2.0,10)); 

die

0x1p+10 

gibt Ich bin verwirrt, weil der Exponent Teil „+10“ eher wie ein Dezimalformat sieht eher als ein hexadezimales Format. Ein hexadezimales Format sollte 1pA sein. Wo liege ich falsch?

Antwort

4

Es ist korrekt, dass das Format hexadezimal für double s heißt.

Der Mann Seite sagt:

Für a Umwandlung, das double Argument umgewandelt wird Notation auf hexadezimal (mit den Buchstaben abcdef) im Stil [-]0xh.hhhp[+-]d [...] der Exponent besteht aus einem positiven oder negatives Vorzeichen, gefolgt von einer Dezimalzahl repräsentiert einen Exponenten von 2.

So ist es richtig, dass, während die Mantisse in hex ist, der Exponent sti ist ll dezimal.

Verwandte Themen