永发信息网

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

答案:6  悬赏:10  手机版
解决时间 2021-07-31 22:02

今天考试的一道题目

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

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

最佳答案

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

全部回答

因为2赋值了给a

a==0……为真

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

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

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

定义一个int a不赋值的话就相当一个构造函数,默认值为0,下面才是他的赋值,从左到右运算所以最后为2;

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

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

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
孚乳期能喝鸭汤吗?还有吃什么好,不能吃什么
原来在山东台先声夺人的领唱去那了
孩子在课堂上有没有认识听讲,在学校有没有听
qq宠物该怎么打工和学习?
济源市欧派(济源专卖店)我想知道这个在什么地
雀巢咖啡醇品和特浓区别是什么?
诺基亚78N机身内存上网够用吗?下载的软件可以
谁知道Q吧现在是怎么了?看不了视频帖等一些
手机多晋达c730上用的UC播放器在什么网站
辉县市新乡唯美牙科怎么去啊,谁知道地址啊
嘉兴新天地酒吧在招服务员吗?
脸上得痘痘总是有像米一样的块状物。是什么原
笔记本电脑的电池越来越不耐用了,怎么办?
笔记本的主要结构
怎样区分问问官方团队
推荐资讯
一九八九年二月初九出生的我想占卜我的爱情
什么是n维单形
冬天手脚凉
老挝有什么好玩的玩具,有什么好玩的玩具
句式it’s ok to do sth before XX
大悟县孝感莱得快(大悟店)怎么去啊,谁知道地
寻一个片子的名称
为什么打开问问,空间自动跳游戏网站,还有音
紧急求救`多谢大家
零之使魔会不会出第四季啊?
我小孩五个月啦但是最近经常呕奶,呕奶时怎么
华龙区濮阳同修仁德地址在哪里啊
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?