| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1090 人关注过本帖
标题:&&的运算,求解题思路
只看楼主 加入收藏
航崽爱吃汤圆
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2022-3-20
结帖率:50%
收藏
 问题点数:0 回复次数:8 
&&的运算,求解题思路
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 解题 运算 思路 
2022-08-08 22:21
航崽爱吃汤圆
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2022-3-20
收藏
得分:0 
就想知道a,b的值,以及你为什么求得a,b的值是这样
2022-08-08 22:22
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1507
专家分:9241
注 册:2010-3-16
收藏
得分:0 
false
a=1,b=1;

其实就是a && b,&&从左往右结合当a为false时,不进行后面的运算,直接跳过,给出false的结果。

这个可以通过if (b++ && a++) 验证。
2022-08-09 02:06
chenyucheng
Rank: 3Rank: 3
来 自:浙江省台州市临海市
等 级:论坛游侠
威 望:3
帖 子:141
专家分:181
注 册:2022-7-1
收藏
得分:0 
程序代码:
#include <stdio.h>
main()//main函数不能这样定义。返回值要设为int,即int main()。
{
    int a = 0, b = 1; //现在a是0,b是1。
    if(a++ && b++) //判断中a还是0,b还是1,直到判断后a和b才变化。
        // ++放变量后面,是先返回当前值,再增加;放前面,是先增加,再返回增加后的值。
        // 现在a是1,b是2
        printf("TRUE");
    else
        // 现在a是1,b是2
        printf("FALSE");
    printf("_OUT:a=%d,b=%d\n", a, b);
}

if执行之前,a是0,b是1;if判断当中,a还是0,b还是1;if判断后,a才变成1,b变成2。
++运算符放变量后面(如a++),是先返回当前值,再增加;放前面(如++a),是先增加,再返回增加后的值。
还有&&是“而且”的意思。
所以会输出:
FALSE_OUT:a=1,b=2

如果要在输出TRUE或FALSE后换行,要把相应的printf()语句的内容加上\n转义符。
如果在某个新的编译器报错(报错的是第2行 main() 这行),只需要把函数定义语句 main() 改成 int main() ,并且main函数的最后加入 return 0 ,即可。最好用int main() ,不能直接定义 main() 。

[此贴子已经被作者于2022-8-9 08:27编辑过]


爱玩编程的小学生,有Python,但只会一点点C++。

版主->斑竹->竹子,所以版主是竹子。(doge)
//不要让我当版主
2022-08-09 08:04
wang1111
Rank: 1
等 级:新手上路
威 望:1
帖 子:2
专家分:2
注 册:2022-8-16
收藏
得分:0 
a++&&b++,这个如果是先值后运算打出的结果是,false,a=1,b=1.  a变成1是对的,b为什么没有给值后加1变成2?   如果要是循环语句是不是b就会加呢?  会的给解释下?谢谢

[此贴子已经被作者于2022-8-16 09:11编辑过]

2022-08-16 08:54
不会游泳的虾
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:27
帖 子:108
专家分:675
注 册:2021-7-1
收藏
得分:0 
&& 是双目逻辑与运算,意为同时都要满足。对于&&运算,两边的表达式只要有一个为假,结果就为假。左表达式 && 右表达式 运算时,如果左表达式为假,那么对于&&运算来说,最后的结果肯定都是假了,所以计算机就偷个懒, 后面的右表达式就不执行了,也就是平常讲的短路现象。
结合上面的代码,这句 if(a++ && b++) 这么分解:if(a && b) ,a++,b++ ; 因为 a=0,b=1; (a=0 && b=1) ==> 结果为假,同时 b++ 就未被执行到,所以这句执行完后,a++ 被执行了,所以此时a =1, b++未被执行,所以b的值未变 b = 1。
所以上面的代码最终输出:FALSE_OUT:a=1,b=1
上面4楼的答案是错误的。

[此贴子已经被作者于2022-8-16 14:00编辑过]

2022-08-16 13:53
chenyucheng
Rank: 3Rank: 3
来 自:浙江省台州市临海市
等 级:论坛游侠
威 望:3
帖 子:141
专家分:181
注 册:2022-7-1
收藏
得分:0 
回复 6楼 不会游泳的虾
原来还可以这样……
(还有,我当时把“数字&&数字”理解成了“数字==数字”)

爱玩编程的小学生,有Python,但只会一点点C++。

版主->斑竹->竹子,所以版主是竹子。(doge)
//不要让我当版主
2022-08-16 14:27
ssl002
Rank: 2
等 级:论坛游民
威 望:2
帖 子:75
专家分:43
注 册:2017-6-13
收藏
得分:0 
4楼正解
2022-08-16 16:37
不会游泳的虾
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:27
帖 子:108
专家分:675
注 册:2021-7-1
收藏
得分:0 
回复 7楼 chenyucheng
还有 ||  双目或运算也是有短路现象的, || 运算是只要其中一个为真,结果就为真,当 左表达式=1 || 右表达式=0 或 =1 时,|| 运算的结果都为真,所以此时右表达式也不被执行到。
2022-08-17 09:25
快速回复:&&的运算,求解题思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021688 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved