防止在printf C C ++中打印标志

时间:2015-10-28 07:26:08

标签: c++ c printf

默认情况下会打印负数字符号,如果需要,可以通过添加+标记来打印加号。
我希望打印一个没有标志的数字 我相信有一面旗帜,但这似乎不起作用。

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

如果有人可以建议如何为输入x和-x,(x> 0)打印x,那将会很棒。
PS :我不喜欢操作数字,我正在寻找软件功能。

5 个答案:

答案 0 :(得分:7)

  

我希望打印一个没有标志的数字。

没有人会想要这样做,因为从否定号码留下标志会使其成为不同的号码。

  

PS:我不想操作数字

那么,做你不喜欢的事情...... abs()是你正在寻找的功能,并准确表达了正在发生的事情。

答案 1 :(得分:2)

尝试

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

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

答案 2 :(得分:2)

不确定您反对abs()的原因 - 但如果不使用,则必须使用三元(p<0?-p:p)作为等效物。

答案 3 :(得分:1)

printf中没有标志可以做你想要的,你可以使用abs()函数,就像这样

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

其中i是您的变量。

这是针对整数的。你也可以对数字进行二元运算,把它转移到正数表示,但是abs()已经为你做了,所以这样做是肤浅的。

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

答案 4 :(得分:0)

在你的例子中,你可以通过简单的角色替换来逃脱。首先用符号打印,然后用另一个字符替换:

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

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