我是C的初学者。我使用了这本书" C编程 - 现代方法"。 我在这本书中做了一个练习。但我不明白为什么当我填写负数时,此代码不会打印负数。 也许我错过了一些细节,或者它只是一些愚蠢的东西,所以请帮助我。 这是代码:
#include <stdio.h>
int main(void)
{
int i;
printf("Vul een negatief getal in: ");
scanf("%d", &i);
printf("%d\n", i >= 0 ? i : -i);
system("pause");
return 0;
}
谢谢
答案 0 :(得分:6)
printf("%d\n", i >= 0 ? i : -i);
5
它会打印i
,即5
-5
它会打印-i
,即-(-5)
5
如果您不熟悉三元运算符,请查看其工作原理:
CONDITION ? EXPR_TRUE : EXPR_FALSE
它测试CONDITION
,如果true
测试EXPR_TRUE,则评估EXPR_FALSE
在你的情况下:
i >= 0 ? i : -i
如果i
或i >= 0
,会产生-i
。
答案 1 :(得分:1)
因为这里有ternary operator,
printf("%d\n", i >= 0 ? i : -i);
三元取绝对值。它可以扩展到
if (i >= 0) {
printf("%d\n", i);
} else {
printf("%d\n", -i);
}
答案 2 :(得分:1)
由于i >= 0 ? i : -i
如果i> = 0,例如i = 3,则打印3
如果我&lt; 0,例如i = -3,然后打印 - ( - 3)= 3
所以虽然我有时候 - 但是打印输出永远都不适合你。