如果我要添加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;
}
答案 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)