设a,b,c均为1,则执行赋值语句c=((a-->0?0:1),(++b<0?1:a--)后,a,b,c的值分别为[ ]。
A 0,1,0
B 0,1,1
C-1,2,0
D-1,2,-1
希望有详细过程,谢谢!
设a,b,c均为1,则执行赋值语句c=((a-->0?0:1),(++b<0?1:a--)后,a,
答案:2 悬赏:50
解决时间 2021-02-02 21:54
- 提问者网友:饮鸿
- 2021-02-02 02:42
最佳答案
- 二级知识专家网友:闲懒诗人
- 2021-02-02 04:06
int a=0,b=1,c,d; c=(!(a='0')&&b--,a+b); 因为表达式中出现逗号,这是个逗号表达式,赋值给c的一定是逗号表达式最后一个式子计算出的值,那么这个语句可以分解为 a='0'; //a=48 d=!a&&b; //由于&&运算时,前边的!a为0,即假,后面的b--就被省略不算了,所以不执行b--; c=a+b; //c=49,表达式结果是49选D,这时b仍然等于1
全部回答
- 1楼网友:糜废丧逼
- 2021-02-02 04:50
a=0
b=0
c=0
因为这里是因为 逻辑表达式 与 或同时出现时候与的级别优先 所以 后面的b++&&c++;看做一个整体 但是 c语言里面有一个栈机制 就是优先级高的先进栈 这样b++&&c++;进栈了 而后a--进栈 出栈时候是后进先出来 所以先读到a-- a此时还是1 (因为a--先表示值 后运算)是这里我们要注意了 有一个||或 这个符号出现 就是说如果前面的为真(也就是不为0)后面的不进行运算 所以b c值没有操作 都为0
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯