首页 > 试题广场 >

下列程序段执行后,输出d的值为()

[单选题]
下列程序段执行后,输出d的值为()
int main()
{
   int a=1,b=0,c=-1,d=0;
   d=++a||++b&&++c;
   cout<<d<<endl;
   return 0;
}
  • 1
  • 2
  • 3
  • 0
|| &&  不是左右顺序的事,而是 && 的优先级高于||
发表于 2016-03-12 19:10:50 回复(6)
1. C/C++中,布尔值作为整型输出时,表现为:true输出1,false输出0;
2. 语句4为逻辑表达式,因此返回值d为1或0;
3. 短路原则:||或操作符左操作数为真,即可停止判断,返回1。
编辑于 2016-03-02 16:05:24 回复(8)

运算符优先级:&&>||>=

所以先计算++b&&++c,++c为0,所以整体是false=0,再计算++a||0,++a为true,

所以整体是true=1,所以d=1

发表于 2016-08-09 15:26:10 回复(2)
C++中,与运算&&优先级高于或运算||。
inta=1,b=0,c=-1,d=0;
d=++a||++b&&++c;
先看++b&&++c,++c为0,所以整体为假,即0。
再看 ++a||0,++a为真(2,非0),所以整体为1。
所以d为1。
发表于 2017-06-13 20:31:33 回复(0)
++x| |++y&&++z , 这个表达式中++x 与 ++y&&++z 两者构成“或”表 达式。或表达式中两者有一个为真,表达式即为真 。在C中,对于或表达式,当第一个表达式为真是 ,就可以认为真个表达式为真,没必要去计算后面的表达式的值。
发表于 2015-10-14 16:38:05 回复(2)
&&的优先级高于||,故一定要注意优先级运算。
发表于 2016-05-23 14:37:18 回复(0)
一般都是从左到右的结合顺序,除了三目运算符,复合的赋值运算符,自增,自减等是从右到左的顺序结合!
发表于 2015-10-25 18:23:18 回复(0)
运算符&&和||结合规律:右结合
发表于 2015-10-20 16:37:30 回复(0)
1.d=++a||++b&&++c中,++a||++b&&++c为逻辑表达式,其值要么为1,要么为0;
2.&& 运算符优先级高于 ||,所以最后算的是 || ,只要其中一个为真,表达式为真,表达式(++a)为2,不为0,为真,故d = 1;
发表于 2018-03-06 20:29:38 回复(0)
短路
发表于 2015-10-26 22:45:06 回复(0)
短路,并不会因为&&的优先级高先执行
发表于 2018-10-17 11:31:35 回复(0)
发表于 2020-12-02 08:36:06 回复(0)
既然&&的优先级高于||,那如果这题&&的两个操作数均为真,那||右边就为真了,那这时候左边的表达式还需要计算吗?
发表于 2016-04-01 01:35:08 回复(1)
  1. 逻辑非(NOT) - !:单目运算符,优先级最高。
  2. 逻辑与(AND) - &&:双目运算符,具有短路特性,优先级次之。
  3. 逻辑或(OR) - ||:双目运算符,也具有短路特性,优先级最低。
发表于 2024-08-01 14:16:20 回复(0)
哦哦哦、d被赋值的是true
发表于 2022-02-27 18:45:53 回复(0)
****
发表于 2021-06-11 11:04:57 回复(0)
这题虽然与运算符优先级高,但是你可以把括号加上去 运行之后b等于0说明总体或运算还是从左边开始的!
发表于 2021-04-25 21:58:02 回复(1)
发表于 2020-10-19 09:27:38 回复(0)
这个就是所谓的短路运算,逻辑或左边就已经得出答案了,后面不需再看
发表于 2020-09-08 15:38:14 回复(0)
<p>||短路原则</p><p><br></p>
发表于 2020-06-27 22:42:59 回复(0)