C语言的问题

设x、y、t均为int型变量,则执行语句:x=y=3; t=++x||++y; 后,y的值为
A) 不定值 B) 4
C) 3 D) 1

设 a、b、c、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为
A) 0 B) 1
C) 2 D) 3
以下非法的赋值语句是
A) n=(i=2, ++i); B) j++;
C) ++(i+1); D) x=j>0;
以下程序的输出结果是
main()
{
int x=3, y=2, z=1;
printf("%d\n", x/y&~z);
}
A) 3 B) 2
C) 1 D) 0

麻烦讲下是怎么做出来的
那个&还有~是什么意思 在这个题里面怎么运算??

我先把运算符号解释一下你就会做了:
|| 读作:逻辑或。属于二元运算,当且仅当两个运算量的值都为“假”时,运算结果为“假”,否则为“真”。对于逻辑或运算,如果第一个操作数被判定为“真”,系统不再判定或求解第二操作数。

&& 读作:逻辑与。属于二元运算,当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。对于逻辑与运算,如果第一操作数被判定为“假”,系统不再判定或求解第二操作数。

& 按位与运算。“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位为1,否则为0.参与运算的数以补码方式岀现。
~ 按位取反运算。“~”为单目运算,具有右结合性。其功能是对参与运算的数的各二进位按位求反。
答案是:
CCCD
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-19
第一题应该为B。因为单目运算(自加)的优先级高于逻辑运算。
第2个回答  2009-01-10
C(逻辑或运算的短路问题,因为++x!=0,所以后面不走了)

C(逻辑与运算的短路问题,因为前面的表达式等于0,所以后面短路掉了)

C(++运算符不能用于非变量)

D(看明白运算符优先级和位运算就明白了,这个式子等价于 (x/y)&(~z),希望我没记错 )

如果你真的不明白&和~的话,应该去看看c语言的位操作,这里我就不细说了。
相似回答