为什么';这个C代码不能打印一个负整数吗?

为什么';这个C代码不能打印一个负整数吗?,c,C,我是C语言的初学者,我使用的是“C编程-现代方法”一书。 我在这本书里做了一个练习。但我不明白为什么我填写负数时,这段代码不打印负数。 也许我遗漏了一点细节,或者只是一些愚蠢的事情,所以请帮帮我。 代码如下: #include <stdio.h> int main(void) { int i; printf("Vul een negatief getal in: "); scanf("%d", &i); printf("%d\n", i

我是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;
}
#包括
内部主(空)
{
int i;
printf(“vuleen negatief getal in:”);
scanf(“%d”、&i);
printf(“%d\n”,i>=0?i:-i);
系统(“暂停”);
返回0;
}
谢谢你,因为你有一个

三元取绝对值。它可以扩展到

if (i >= 0) {
  printf("%d\n", i);
} else {
  printf("%d\n", -i);
}
因为你在这里有一个

三元取绝对值。它可以扩展到

if (i >= 0) {
  printf("%d\n", i);
} else {
  printf("%d\n", -i);
}
printf(“%d\n”,i>=0?i:-i)

  • 如果您输入一个正数(或零),例如
    5
    它将打印
    i
    5
  • 如果输入负数,例如
    -5
    ,它将打印
    -i
    ,即
    -5
    ,即
    5

如果您不熟悉三元运算符,请参见其工作原理:

CONDITION ? EXPR_TRUE : EXPR_FALSE
它测试
条件
,如果
true
则计算EXPR\u true,否则计算
EXPR\u FALSE

就你而言:

i >= 0 ? i : -i
如果
i>=0
-i
否则产生
i

printf(“%d\n”,i>=0?i:-i)

  • 如果您输入一个正数(或零),例如
    5
    它将打印
    i
    5
  • 如果输入负数,例如
    -5
    ,它将打印
    -i
    ,即
    -5
    ,即
    5

如果您不熟悉三元运算符,请参见其工作原理:

CONDITION ? EXPR_TRUE : EXPR_FALSE
它测试
条件
,如果
true
则计算EXPR\u true,否则计算
EXPR\u FALSE

就你而言:

i >= 0 ? i : -i

如果
i>=0,则产生
i
,否则产生
-i

因为
i>=0?i:-i

如果i>=0,例如i=3,则打印3

如果i<0,例如i=-3,则打印-(-3)=3


所以,虽然有时我是-ve,但打印输出对您来说永远不是-ve。

因为
i>=0?i:-i

如果i>=0,例如i=3,则打印3

如果i<0,例如i=-3,则打印-(-3)=3


因此,虽然有时我是-ve,但打印输出对您来说永远不是-ve。

aaah我没有想到五个括号!非常感谢。啊,我没有想到五个括号里的那些!非常感谢。