$a=0; $b=0; if($a=3 || $b=3){ $a++; $b++;} echo $a.”,”.$b;为什么结果是1,1啊,

还有将||换成|之后结果为什么是4,4,麻烦哪位大神给分析下if括号中的运算顺序... 还有将||换成|之后结果为什么是4,4,麻烦哪位大神给分析下if括号中的运算顺序 展开
 我来答
laizijiding
2013-04-04 · TA获得超过416个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:212万
展开全部

if($a=3 || $b=3)   注意这里 是用的 一个等号 一个等号  是赋值 

注意if里面 的空号 在$a $b赋完值后  还进行 或运算 

而在进行或运算的时候 $a $b 数据类型自动 转换为了 布尔值



$a=0; $b=0;
if($a=3 || $b=3){
var_dump($a);
var_dump($b);
$a++; $b++;
var_dump($a);
var_dump($b);
}
echo $a.",".$b;
追问
十分感谢你的回答,但是或运算的优先级不是高于赋值运算吗?为什么是先赋值在或啊?还有为什么如果将或改成按位或,$a,$b都会变成整型,没有变成布尔值呢 ? 希望您能进一步给予解答,谢谢
小小的仙神
2013-04-03
知道答主
回答量:34
采纳率:0%
帮助的人:21.7万
展开全部
这是php语法嘛?||是或运算,当左边的运算是非0的或者真的,不对右边表达式做运算。所以$a=4,$b=1;=是赋值运算符,==才是逻辑运算中的等于。|是逻辑或,是两边的二进制数进行或运算,两边都要运算,$a=4,$b=4。
追问
我开始也是这么以为的,但是运行了下发现第一个的结果是1,1,第二个的是4,4.第一个如果给两个赋值运算加了括号,就是4,1.所以我想不通啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式