#include "stdio.h"
void main()
{
int a=0,b;
b=a++&&a++&&a++;
printf("%d.%d",a,b);//1.0
a=0;
b=a++&&a++||a++;
printf("%d.%d",a,b);//2.1
}
哪位过路大哥帮我看下这个c++,解释下为什么是这样的运行结果?谢谢
答案:2 悬赏:50 手机版
解决时间 2021-04-20 20:07
- 提问者网友:太高姿态
- 2021-04-20 14:32
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-04-20 16:04
a++是先取值再运行,前面那个是应为 等号右边a先取值为 0 所以 &&运算之后b为0,并且只运算一步,就是不会运算第二个a++
后面的是应为有 || 运算符,所以b会为1,且会往后运算,而且应为第二个a++后面有 || 不会运算第三个a++
全部回答
- 1楼网友:舍身薄凉客
- 2021-04-20 17:20
#include "stdio.h"
void main()
{
int a=0,b;
b=a++&&a++&&a++;//因为a初始化为0。所以a++先是0;把以这句就可理解为b=0&&a++&&a++;b=0;l因为这是与运算只要一个为0都为0了,后面的就可以不算了。这条语句完了,那么A就自加1;把以A就为1;
printf("%d.%d",a,b);//1.0
a=0;
b=a++&&a++||a++;//和上面差不多。a++&&a++这个为0;而A自加了。所以A=1;在或一个A++就为真了。所以B=1;完这句后A=2;
printf("%d.%d",a,b);//2.1
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯