有条件的`printf`语句

时间:2014-12-13 10:19:11

标签: c printf text-formatting

有没有办法缩短这个:

if (a > 0)
    printf("%d", a);
else
    printf("%d", -a);

我的意思是,有没有办法用printf运算符在一个?内编写所有内容?

3 个答案:

答案 0 :(得分:6)

这应该适合你:

printf("%d", (a > 0? a: -a));

输入/输出:

 5 -> 5
-5 -> 5

一个小测试程序:

#include<stdio.h>

int main() {

    int a = -5, b = 5;

    printf("%d\n", (a > 0? a: -a));
    printf("%d\n", (b > 0? b: -b));

    return 0;

}

答案 1 :(得分:3)

使用三元运算符。

printf("%d\n",(a>0) ? a:-a); 

如果条件为true,则执行?之后。否则,在执行:之后。

答案 2 :(得分:2)

您希望获得absolute value。对于int类型,您可以使用<stdlib.h>标题中的abs()函数用于此目的:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int a;

    a = 3;
    printf("%d\n", abs(a));

    a = -3;
    printf("%d\n", abs(a));

    return 0;
}

对于labs()llabs()类型,long int(C99)也分别long long int以及浮点类型,例如来自<math.h>的{​​{3}}。