默认情况下会打印负数字符号,如果需要,可以通过添加+标记来打印加号。
我希望打印一个没有标志的数字
我相信有一面旗帜,但这似乎不起作用。
printf("'%d'", 10); --> '10'
printf("'%d'",-10); --> '-10'
printf("'%+d'",10); --> '+10'
如果有人可以建议如何为输入x和-x,(x> 0)打印x,那将会很棒。
PS :我不喜欢操作数字,我正在寻找软件功能。
答案 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()
函数。