永发信息网

static int a; (a==0)&&(a=-1)&&(a=2) ; a为什么等于2

答案:6  悬赏:10  手机版
解决时间 2021-07-31 22:02
  • 提问者网友:我们很暧昧
  • 2021-07-31 09:04

今天考试的一道题目

main()
{static int a;
(a==0)&&(a=-1)&&(a=2) ;
printf("%d",a);
}

a都没有赋值,a==0是怎么算的啊,结果居然是2?????????????

最佳答案
  • 五星知识达人网友:摆渡翁
  • 2021-07-31 09:57

静态变量未初始化,在系统中会自动初始化为0的,在a==0时是成立的,因此后面的a=-1是会执行的,同是此表达式非零,后面的a=2也会执行,整体的逻辑表达式非零也为真。而此时a的值已经变成2了

全部回答
  • 1楼网友:大漠
  • 2021-07-31 14:33

因为2赋值了给a

  • 2楼网友:傲气稳了全场
  • 2021-07-31 13:35

a==0……为真

a-=-1……a=-1,不是零,也为真

然后a=2也为真。这个表达式算完了,执行到a=2了,所以a=2

如果中间的语句换为a,那么就不执行最后的一个

  • 3楼网友:千杯敬自由
  • 2021-07-31 12:31
定义一个int a不赋值的话就相当一个构造函数,默认值为0,下面才是他的赋值,从左到右运算所以最后为2;
  • 4楼网友:野味小生
  • 2021-07-31 11:00

呵呵,看看中间和最后一个括号,里面的是赋值运算符而不是逻辑判定符

  • 5楼网友:孤独的牧羊人
  • 2021-07-31 10:09

static int a; (a==0)&&(a=-1)&&(a=2)

&&表示与操作即前后表达式都为真则整个表达式为真

他的操作运算方法是先检测前面的如果为真则检查后面的。如果前面的为假则跳过后面的表达式直接判定整个为假

看你的例题:

static int a; (a==0)&&(a=-1)&&(a=2)

a==0因为a刚定义系统初始值为0所以表达式为真。做a=-1 这个是一个赋值语句在做真假判断的时候赋值语句为真此时判定整体为真其中a的值为-1,系统继续做a=2同样这也是个赋值语句此时判断真假为真。所以整体 (a==0)&&(a=-1)&&(a=2) 为真而a得值为最后赋值的数既是2

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯