Previous: Currency Symbol, Up: The Lame Way to Locale Data

##### 7.6.1.3 Printing the Sign of a Monetary Amount

These members of the `struct lconv` structure specify how to print the sign (if any) of a monetary value.

`char *positive_sign`
`char *negative_sign`
  These are strings used to indicate positive (or zero) and negative monetary quantities, respectively.

  In the standard ‘`C`’ locale, both of these members have a value of `""` (the empty string), meaning “unspecified”.

  The ISO standard doesn't say what to do when you find this value; we recommend printing `positive_sign` as you find it, even if it is empty. For a negative value, print `negative_sign` as you find it unless both it and `positive_sign` are empty, in which case print ‘`-`’ instead. (Failing to indicate the sign at all seems rather unreasonable.)

`char p_sign_posn`
`char n_sign_posn`
`char int_p_sign_posn`
`char int_n_sign_posn`
  These members are small integers that indicate how to position the sign for nonnegative and negative monetary quantities, respectively. (The string used by the sign is what was specified with `positive_sign` or `negative_sign`.) The possible values are as follows:
  `0`
    The currency symbol and quantity should be surrounded by parentheses.
  `1`
    Print the sign string before the quantity and currency symbol.
  `2`
    Print the sign string after the quantity and currency symbol.
  `3`
    Print the sign string right before the currency symbol.
  `4`
    Print the sign string right after the currency symbol.
  `CHAR_MAX`
    “Unspecified”. Both members have this value in the standard ‘`C`’ locale.

  The ISO standard doesn't say what you should do when the value is `CHAR_MAX`. We recommend you print the sign after the currency symbol.

  The members with the `int_` prefix apply to the `int_curr_symbol` while the other two apply to `currency_symbol`.