我的意思是| |不是这个 %。 假设我们有两个整数x和y以及整数z。 现在
z = x - y
有没有一种表达| z |的方法?因此,如果z为正,则保持正值;如果z为负,则变成相反的值?我并不是要用if来表达它,而只是用数学方程式,符号或类似的东西来表达。
答案 0 :(得分:1)
答案 1 :(得分:1)
如果没有abs()函数,则采用第二种方式(无分支):
int num;
printf("Enter num: ");
scanf("%d", &num);
printf("Abs=%d\n", num*(1+(num<0)*-2));
经过StoryTeller评论后编辑:
该技巧之所以有效,是因为条件测试(如“ <”)返回0(对于false)或1(对于true)。我们可以将返回的数字部署在更复杂的表达式中。在这种情况下,我们需要一个返回1或-1的表达式。如果数字num不小于0,即不为负,则“ num <0”返回0,表达式给出1 +(-2 * 0)=1。数字num保持不变。如果num IS小于0,即为负,则表达式返回-1:1 +(-2 * TRUE),其中TRUE的值为1。
现在有1或-1(取决于num为负数),简单的乘法会在需要时反转num的符号。