防止在 printf C C++ 中打印符号

Prevent sign from printing in printf C C++

默认打印负数符号,如果需要,通过添加 + 标志可以打印加号。
我想打印一个没有符号的数字。
我相信有一个标志,但这似乎不起作用。

printf("'%d'", 10); -->    '10'
printf("'%d'",-10); -->    '-10'
printf("'%+d'",10); -->    '+10'

如果有人可以建议如何为输入 x 和 -x,(x>0) 打印 x,那就太好了。
PS:我不喜欢对数字进行运算,求一个软件功能

尝试

printf("%d",abs(number));

其中数字是您要打印的数字。

I am looking to print a number without its sign.

没有人会想要这样,因为从 负数 数字中留下符号会使它成为一个 不同 数字。

PS: I don't like to operate on numbers

好吧,那就做你不喜欢的事吧……abs() 是你正在寻找的函数,它准确地表达了正在发生的事情。

printf 中没有标志来执行您想要的操作,但是您可以使用 abs() 函数,如下所示

printf("%d",abs(i));

其中 i 是您的变量。

这适用于整数。您也可以对数字进行二元运算以将其转换为正表示,但是 abs() 已经为您完成了,所以这是肤浅的。

请注意,执行 abs(i) 不会以任何方式修改 i,因此无需先复制变量即可安全地使用它们。

不确定您为什么反对 abs() - 但如果不使用它是必要的,请使用三元 (p<0?-p:p) 作为等效项。

在您的示例中,您可以通过简单的字符替换来解决问题。先打印符号,再换成其他字符:

char buf[99];
snprintf(buf, 99, "%+d'", 10); // +10'
buf[0] = '\'';  // '10'
printf("%s", buf);

但这是特殊情况,一般情况下你应该考虑使用abs()函数。