一道C语言:已有声明"int x=0,y=2;",则执行语句"y=--x||++y;"后,变量y的值为

如题所述

y = --x || ++y; 仅执行前半部分的 y = --x,因为x的初值为0,执行--x后,x为-1,故y也是-1,此时逻辑表达式的值为真(非零),后半部分++y不再执行(短路效应,因为对于||表达式,前半部分为真就不再对后半部分求值,无论后面是真与假,都不影响逻辑结果),由此可知,y的值为-1。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-10
int x=0,y=2;
y=--x||++y;
// 相当于是
--x;  // x = -1
++y;  // y = 3
y = x || y; //y = -1 || 3 = 1;  这里是逻辑的或运算, 有一个非0就会为1

第2个回答  2013-07-10
y=--x||++y;
优先级先计算 --x和 ++y;
--x 结果x = -1;
++y 结果y=3;
即y = -1 || 3;
所以y = 1;本回答被提问者和网友采纳
第3个回答  2013-07-10
变量y的值为1
第4个回答  2013-07-10
答案是 1
#include<stdio.h>
void main()
{
int x,y;
x=0,y=2;
y=--x||++y;
printf("%d",y);
}

c语言二级问题,请高手详细解答下
y=(--x||++y);||运算符的短路效应,--x值为非零,所以子表达式--x||++y值为1,且后半部分的++y未执行,因此y值为1

...均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为
56、D

已有定义“int x=110,y=017;”则执行:(x++;++y)后,按十进制表示,变量x...
111

...型变量, 则执行x=1;y=3;t=(++x)&&(x+y)||++Y;后 y 的值是多少?_百 ...
( (++x) && (x+y) ) 为真 || 右边 ( ++y )被短路 ,所以y的值为3

执行语句:x=y=2;t=++x||++y;后 y的值为什么不是3呢?++y不是y=y+1吗?
这是因为程序执行的问题,当解析器遇到了||时,只要前面的++x为真,后面的语句就不执行了。。。所以++x的值为3(此时为真),++y就不执行了。。。希望可以帮助你,谢谢采纳。。。 本回答由提问者推荐 举报| 答案纠错 | 评论(2) 28 3 牙刷的悲伤 采纳率:50% 来自:芝麻团 擅长: Html\/Css JavaScript 网站...

已知int x,y,z;则执行语句x=y=3;z=++x||++y;后,y的值是多数
x=4,y=3,z=4 z=++x||++y; x先执行+1,后面接着||或连接符,只要前面的条件为真就不执行后面的计算。++x为4 > 0,所以y不做运算任然是3,然后赋值给x,x也变成4了

设x=1,y=2,z=3;则执行表达式 a = ++x || ++y && ++z 后a的值为: x的...
真正编程中要避免这样写 作为出题难为人可以这样做,虽然没什么意义 答案是x = 2 y=2 z=3 因为第一个运算符是|| 而一旦||左边的值为真,则其余部分将不被计算,因为不会影响最终的结果

int x=1,y=2,z=3;则表达式z+=x>y?++x:++y的值是?
因此x>y++x:++y的意思是判断x>y的真假,若为真,则返回表达式++x,若为假,则返回++y.2). 执行z+= 【执行过程】表达式z+=x>y?++x:++y等价于z=z+(x>y?++x:++y).变量赋值后即为z=3+(1>2?++1:++2),1)由于1>2为假(即表达式结果为0),因此返回表达式++y;2)执行++y.++y是先对...

...为int型变量,则执行语句:x=y=z=3;t=++x||++y后,y的值为什么是3不是...
t=(++x||++y)赋值右边是一逻辑表达式,先计算++x,结果是4,为真,所以后面的“||”运算符后面的就不计算了,或运算,只要一个为真,就为真。后面的++y没计算

C语言题库,求发一份
4. 若已有声明“float x= -1234.5678; int m,n=4;”则执行“m=printf(“\\n%8.3f\\n”,x)\/n;”语句后, 变量m的值是 (4) 。 A. 2 B. 3 C. 4 D. 55. 若已有声明“int x1; float x2; long x3; char x4;”,且以下选项均出现在switch语句中,其中正确 的是(5) 。 A. case 1.1: ...

相似回答