C初学者求助
例1,设a=5,b=6,c=7,d=8,执行(m=a>b)&&(n=c>d)后n的值为A.1
B.2
C.3
D.4
我的分析是:(m=a>b)&&(n=c>d)相当于(m=0)&&(n=0),两个为假的逻辑值的逻辑与值应该为0
所以,我自己的最后结果是0。但是没有结果为0的选项,请各位大侠分析
例2,下列程序段执行后,变量k、x、y、z的值依次为
int k,x,y,z;
x=y=z=1;
k=x++&&y++||z++;
A.1、2、2、1
B.1、2、2、2
C.0、2、2、1
D.0、2、2、2
首先,怀疑自己对自增自减运算符“++”和“--”在变量前和变量后的运用理解还是不透
我的理解是,z++表示先使用z,然后再使其值加1;++z表示先将z的值加1,然后再使用z
所以k=x++&&y++||z++等价于k=2&&2||2,等价于k=1||2,即结果为1(值为真),所以答案是B
由于没有参考答案,所以不确定自己的答案。
我想知道的是如果B是正确答案的话,那么k=x++&&y++||z++可以分解为 k=x&&y||z
x=x+1
y=y+1
z=z+1
不是说“++”和“--”的优先级高于“&&”和“||”吗,那就应该分解为
x=x+1
y=y+1
z=z+1
k=x&&y||z
实际上应该是那一种理解,我矛盾啊,都弄糊涂了......