C语言,计算机软件基础问题?

x,y,z均为int型,执行下列语句后,x,y,z的值分别是
x=1;y=0;z=2;
y++&&++z||++x;
我看试卷答案是2,1,2 其中不解的是为什么++z的z为什么还是2而不是3?

这就要说c++的特性了

1&&1和1&&0

执行语句1和语句2

0&&1和0&&0

只执行语句1(特性,都是特性)

因为语句1是0,语句2不管是1还是0,结果都是0

0||1和0||0

执行语句1和语句2

1||0和1||1

只执行语句1(特性,都是特性)

因为语句1是1,语句2不管是1还是0,结果都是1



此题还有一点!

++y

先将y+=1;再使用y

y++

先使用y,再将y+=1;




课余答题:

int a=0;

a+=!(a++&&++a);

cout<<a;

选择(输出的答案):

A.0    B.1    C.2    D.3

(答案见下(请先在心里想好再看))






答案

C

解析:

int a=0;//定义变量a,并将1赋值给a

a+=!(a++&&++a);//结果:a+=!(0(运行后a+=1)&&1(a+=1)(不执行));

                                            a+=!(0(0&&1))

                                            a+=1;

                                            因为a++所以a最后再+1

cout<<a;//输出a的值(2)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-12

y++&&++z||++x;

从左到右执行

y++是先把y用完再自加

++x是加完再用

左&&右       是找0,从左到右,左边是0,就不看右边了

左||右             是找1,从左到右,左边是1,就不看右边了


综合

1、y&&++z   与运算,因为y是0,++z不会运行了,  y&&++z整体是0

2、y用完自加,y变1

3、0||++x ,或运算,上一步整体为0,也就是左边为0,还要看右边,x还要自加


可追问,望采纳

第2个回答  2021-12-15
x,y,z均为int型,执行下列语句后,x,y,z的值分别是x=1;y=0;z=2;y++&&++z||++x;
当它执行y++&&++z后,因为先取y的值0后再y自加,++z的值是3,所以这一部分的值为0,所以需要再执行后面的||++z,z变为3,试卷答案是2,1,2,这是不对的,应当是2,1,3才对。
相似回答