黑马程序员技术交流社区
标题:
关于 if 的一些 疑惑
[打印本页]
作者:
天道酬勤_||淡腾
时间:
2014-5-1 22:34
标题:
关于 if 的一些 疑惑
本帖最后由 天道酬勤_||淡腾 于 2014-5-8 13:02 编辑
if (i<50&i>20); 和if (i<50&&i>20);有什么区别?
作者:
liu0o0y
时间:
2014-5-1 23:03
对于bool操作数,& 计算操作数的逻辑“与“;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。不过对于a && b, 如果 a 为 false,则不计算 b,结果都将是false。
作者:
亚伦
时间:
2014-5-1 23:04
#region 在当前的例子中,&和&&作用一样
int i = 1;
int i2 = 1;
if (i == 1 & i2 == 1)
{
Console.WriteLine("&: i == 1 且 i2 == 1");
}
if (i == 1 && i2 == 1)
{
Console.WriteLine("&&: i == 1 且 i2 == 1");
}
#endregion
// &还有另外的作用:
// 对于整型,& 计算操作数的逻辑按位“与”。仅当两个操作位都为1时结果才是1
// 请仔细观擦如下代码
int j = 12; // 00001100
int j2 = 10; // 00001010
int j3 = j & j2; // 00001000
Console.WriteLine("j3 = {0}", j3);
复制代码
同为新人,可能不能回答得尽善尽美。如果有问题请找我讨论。
作者:
亚伦
时间:
2014-5-1 23:13
// 对了,正如2楼所说,&&使用“短路”模式操作,
// 例如在i == 1 && i2 == 1这条表达式中,i == 1先被求值,如果值为假,那么就没必要(也不会)对 i2 == 1求值(无论i2 == 1的值为真或假,i == 1 && i2 == 1都为假)
// 同样,||运算符在确认第一条表达式为真后,也不会对第二条表达式求值,因为这没必要。
// 而&运算符会计算两个表达式,与第一条表达式的值无关。
复制代码
作者:
continue
时间:
2014-5-1 23:22
你可以参考哈这个帖子
http://bbs.itheima.com/thread-116291-1-1.html
作者:
一片白
时间:
2014-5-4 16:02
本帖最后由 一片白 于 2014-5-4 16:03 编辑
二元运算符 (&) 为整型和 bool 类型预定义了二进制 & 运算符。 对于整型,& 计算操作数的按位“与”。
对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。
条件“与”运算符 (&&) 执行布尔操作数的逻辑“与”运算,但如有必要,只计算第二个操作数。
它与二元运算符 (&)很像,不同的是,如果 x 为 false,则不计算 y(因为不论 y 为何值,与操作的结果都为 false)。这被称作为“短路”计算。
作者:
dwgeneral
时间:
2014-5-6 14:02
& 叫做逻辑与操作符,也叫按位操作运算符, && 叫做条件与操作符。
作者:
dwgeneral
时间:
2014-5-6 14:18
具体分析 if (i<50&i>20); 和if (i<50&&i>20)第一个是要将 i 的数值换成二进制再运算,结果应该是和第二个一样 不过要是 if(2 & 3)和 if (2 && 3)就不一样了 2的二进制是10, 3的二进制是11,按位与运算之后结果是 10 ,条件与之后结果是true
作者:
时光♪微凉
时间:
2014-5-6 19:24
‘&’无论条件是否满足,两个条件都会执行,‘&&’如果前面一个为false,则直接返回false,后面一个就不执行了
int i = 0, j = 1;
if (i > 0 & j ++ > 0) {
//首先执行i>0为false,然后还会继续执行j++>0,返回false,结果j为2。
}
Console.WriteLine(j);
int m = 0, n = 1;
if (m > 0 && n ++ > 0) {
//首先执行m>0为false,就不会再继续执行n++>0,直接返回false,结果n还是1。
}
Console.WriteLine(n);
复制代码
作者:
.net_交流
时间:
2014-5-7 10:08
& 位运算符 处理二进制数据的 &&逻辑运行符 进行判断的
作者:
永远的小飞侠
时间:
2014-5-8 15:49
&是位运算,结果为数值,&&是与||相反的关系运算符,结果一般为布尔值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2