如何在printf中区分格式说明符与普通字符?
如何终止printf中的格式说明符
你想要打印出100us格式的微秒数,编写了如下代码:
long microseconds = 100L; printf("%lus", microseconds);
但实际输出只有100s——这是因为%l和紧跟的u被解析成了unsigned long类型的格式说明符,而非long格式说明符加上普通字符u。
正确写法
要让u作为普通字符输出,只需将它与格式说明符分离:
long microseconds = 100L; printf("%ldus", microseconds);
这里%ld是long类型的标准格式说明符,后面的us会被当作普通字符串直接输出,最终就能得到预期的100us。
如果需要更清晰的拆分,也可以写成:
printf("%ld%s", microseconds, "us");
内容的提问来源于stack exchange,提问作者baconcheese113
相关产品推荐
相关产品推荐

