Do you ever got confused when you want to NSLog a long integer? What to use to print a long %ld or %lx or %f or %d. Well Here is a complete list of all the NSString format specifiers –

Specifier |
Description |

`%@` |
Objective-C object, printed as the string returned by `descriptionWithLocale:` if available, or `description` otherwise. Also works with `CFTypeRef` objects, returning the result of the `CFCopyDescription` function. |

`%%` |
`'%'` character |

`%d` , `%D` , `%i` |
Signed 32-bit integer (`int` ) |

`%u` , `%U` |
Unsigned 32-bit integer (`unsigned int` ) |

`%hi` |
Signed 16-bit integer (`short` ) |

`%hu` |
Unsigned 16-bit integer (`unsigned short` ) |

`%qi` |
Signed 64-bit integer (`long long` ) |

`%qu` |
Unsigned 64-bit integer (`unsigned long long` ) |

`%x` |
Unsigned 32-bit integer (`unsigned int` ), printed in hexadecimal using the digits 0–9 and lowercase a–f |

`%X` |
Unsigned 32-bit integer (`unsigned int` ), printed in hexadecimal using the digits 0–9 and uppercase A–F |

`%qx` |
Unsigned 64-bit integer (`unsigned long long` ), printed in hexadecimal using the digits 0–9 and lowercase a–f |

`%qX` |
Unsigned 64-bit integer (`unsigned long long` ), printed in hexadecimal using the digits 0–9 and uppercase A–F |

`%o` , `%O` |
Unsigned 32-bit integer (`unsigned int` ), printed in octal |

`%f` |
64-bit floating-point number (`double` ) |

`%e` |
64-bit floating-point number (`double` ), printed in scientific notation using a lowercase e to introduce the exponent |

`%E` |
64-bit floating-point number (`double` ), printed in scientific notation using an uppercase E to introduce the exponent |

`%g` |
64-bit floating-point number (`double` ), printed in the style of `%e` if the exponent is less than –4 or greater than or equal to the precision, in the style of `%f` otherwise |

`%G` |
64-bit floating-point number (`double` ), printed in the style of `%E` if the exponent is less than –4 or greater than or equal to the precision, in the style of `%f` otherwise |

`%c` |
8-bit unsigned character (`unsigned char` ), printed by `NSLog()` as an ASCII character, or, if not an ASCII character, in the octal format `\ddd` or the Unicode hexadecimal format `\udddd` , where `d` is a digit |

`%C` |
16-bit Unicode character (`unichar` ), printed by `NSLog()` as an ASCII character, or, if not an ASCII character, in the octal format `\ddd` or the Unicode hexadecimal format `\udddd` , where `d` is a digit |

`%s` |
Null-terminated array of 8-bit unsigned characters. `%s` interprets its input in the system encoding rather than, for example, UTF-8. |

`%S` |
Null-terminated array of 16-bit Unicode characters |

`%p` |
Void pointer (`void *` ), printed in hexadecimal with the digits 0–9 and lowercase a–f, with a leading `0x` |

`%L` |
Length modifier specifying that a following `a` , `A` , `e` , `E` , `f` , `F` , `g` , or `G` conversion specifier applies to a `long double` argument |

`%a` |
64-bit floating-point number (`double` ), printed in scientific notation with a leading `0x` and one hexadecimal digit before the decimal point using a lowercase `p` to introduce the exponent |

`%A` |
64-bit floating-point number (`double` ), printed in scientific notation with a leading `0X` and one hexadecimal digit before the decimal point using a uppercase `P` to introduce the exponent |

`%F` |
64-bit floating-point number (`double` ), printed in decimal notation |

`%z` |
Length modifier specifying that a following `d` , `i` , `o` , `u` , `x` , or `X` conversion specifier applies to a `size_t` or the corresponding signed integer type argument |

`%t` |
Length modifier specifying that a following `d` , `i` , `o` , `u` , `x` , or `X` conversion specifier applies to a `ptrdiff_t` or the corresponding unsigned integer type argument |

`%j` |
Length modifier specifying that a following `d` , `i` , `o` , `u` , `x` , or `X` conversion specifier applies to a `intmax_t` or `uintmax_t` argument |

Hope it will save someone time!