如何忽略一组输入中的负值

时间:2015-10-12 15:17:45

标签: c

如果我要添加5个整数,我想问一下我应该做什么(不要告诉确切的代码)忽略负值。例如,我输入了1,2,3,4和-1。总和应为10而不是9,因为需要忽略负值。提前谢谢!

int main()
{
int num, sum=0, i;

for(i=0;i<5;i++)
{
printf("Please enter 5 integers: ");
scanf("%d", &num);
sum+=num;
}
printf("The sum is %d", sum);
return 0;
}

2 个答案:

答案 0 :(得分:4)

使用if

 if(num>0)
     sum+=num;

使用三元运算符? :

的另一种方法
sum += num>0? num: 0;

答案 1 :(得分:2)

我所知道的最快的方法是使用

sum += 0 ^ ((0 ^ num) & -(0 < num))

这使用惯用的计算方式max

x ^ ((x ^ y) & -(x < y))

代表int类型(比if或三元组更快。)

如果速度不重要且您的C实现具有max(或MAX),那么请考虑使用它:sum += max(0, num)