在下面的代码中,x的值是什么?为什么?
bool x =true;
x &= false;
答案 0 :(得分:14)
x为false,因为(true& false)== false。
& =是& as + =是+。
答案 1 :(得分:12)
x &= false;
是:
的简写x = x & false;
所以在你的代码中:true& false解析为false。
答案 2 :(得分:2)
x &= false;
与
相同x = x & false;
所以,正如moonshadow所说:虚假......
答案 3 :(得分:2)
查看此MSDN Article
摘录:Binary&运算符是为整数类型和bool预定义的。对于整体类型,&计算其操作数的逻辑按位AND。对于bool操作数,&计算其操作数的逻辑AND;也就是说,当且仅当它的两个操作数都为真时,结果才为真。
所以换句话说,这就是说你的例子中的x是假的,因为(true和false)是假的
答案 4 :(得分:1)
答案 5 :(得分:1)
x &= false
只是
的简短形式x = x & false
在该代码的末尾将为false。
& =是一个赋值操作符,其中有一堆(+ =, - =,* =,/ =,| =等)。它们只是对变量执行操作的简短方法,并将结果分配回该变量。
答案 6 :(得分:1)
& operator是一个逻辑“和”,它总是计算表达式的两半。除非两个操作数都是真的,否则&返回false。 x& = y是x = x&的缩写。收率
C#使用中更常见的是&& operator,返回相同的值,但一旦找到false值就停止计算操作数。这与返回值的函数的副作用有关。例如:
if(ConnectToDatabase() && ExecuteQuery())
将在所有情况下运行ConnectToDatabase(),但只有在ConnectToDatabase()返回true时才运行ExecuteQuery。在这种情况下,如果未连接数据库,则不希望尝试运行查询。
另一方面:
if(VerifyIdentity() & RegisterRequest())
将始终执行VerifyIdentity()和RegisterRequest(),然后评估其组合返回值的真实性。
答案 7 :(得分:1)
此运算符可用于验证...
valid = True;
valid &= firstname.isValid();
valid &= lastname.isValid();
valid &= email.isValid();
if(valid)
// do something;