printf / sprintf 删除登录号码的问题

hat*_*aru 1 c c++ printf gcc g++

我有一个可能为负数或正数的数字,我希望它从 sprintf() 中弹出,而不带负号或正号。我该怎么做呢?

我尝试过%d % d %- d %+ d % -d % +d,但没有一个有效。

我尝试了 gcc 4.8.2 和 g++ 4.8.2 但不起作用。这是 gcc 中的错误吗?

And*_*dén 5

没有应用绝对值功能的格式字符串。

这是你必须做的:

#include <stdio.h>
#include <math.h>

void main()
{
  int num = -6000;
  printf("%d\n", abs(num));
}
Run Code Online (Sandbox Code Playgroud)
  • %d会将 34 渲染为34,将 -34 渲染为-34
  • % d会将 34 渲染为 (space) +34并将 -34 渲染为-34.
  • %+d会将 34 渲染为 +34,将 -34 渲染为-34
  • "%5d会将 34 渲染为(三个空格) + 34,将 -34 渲染为(两个空格) + -34。他们都将使用字段大小 5。
  • "%-5d会将 34 渲染为 34+(三个空格),将 -34 渲染为-34+(两个空格)。它们都将使用字段大小 5,但由于 而左对齐-