有没有办法缩短这个:
if (a > 0)
printf("%d", a);
else
printf("%d", -a);
我的意思是,有没有办法用printf
运算符在一个?
内编写所有内容?
答案 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}}。