什么是可能的输出?

时间:2015-11-10 12:01:21

标签: c variable-assignment assignment-operator

我编码了很长时间,但我之前从未问过这样的问题。

main()
{
    int a=5, b, c;
    b=a=15;
    c=a<15;
    printf("%d %d",a,c);
    }

a和c的值是多少?我们如何解释'&lt;'或'&gt;' ?

3 个答案:

答案 0 :(得分:3)

var MainNav = $(this).val();运算符会产生<类型的01

如果左操作数小于右操作数,则产生int,否则为1

在您的情况下,左操作数的值为0a;右操作数的值为15。因此运算符产生值15

然后将0分配给0

带有额外空格,括号和注释的语句可以写成

c

答案 1 :(得分:0)

main()
{
  int a=5, b, c;
  b=a=15;                  // a = 15
  c=a<15;                  // a is not < 15, a is 15, so c is 0
  printf("%d %d",a,c);
}

答案 2 :(得分:0)

首先,此代码的结果未定义,因为您没有为printf提供函数原型

其次,使用main()进一步未定义,因为函数需要返回类型,而main()特别需要是int返回类型(其他实现的处理是实现定义的。

现在假设您将代码更正为:

#include <stdio.h>
int main(void)
{
    int a=5, b, c;
    b=a=15;
    c=a<15;
    printf("%d %d",a,c);
    return 0;
    }

然后c的输出为0

这是因为<运算符会根据比较是否为真来返回int类型01