c语言 逻辑运算符(&&)的运算问题
例题:1.inta=0,b=1,c=0;if(a&&++b)c++;printf("%d,%d\n",b,c);运行结果:0,0.例题;2.inta=0,b=1,c=0;...
例题:1.
int a=0,b=1,c=0;
if(a&&++b)c++;
printf("%d,%d\n",b,c);
运行结果:0,0.
例题;2.
int a=0,b=1,c=0;
if(a&&b++)c++;
printf("%d,%d\n",b,c);
运行结果:1,0.
我不理解的地方:&&运算符,X&&Y,当X,Y两个都为非0时结果才会为真。
既然这样,回到例题中,a的值既然为0了,0&&(任何值)结果都为0,
那就是说只要系统 一取到a的值为0时,就能得出结果为0了,
后面的++b或b++应该没有必要再去运算,可是为何例题2中,还会去运算b++呢?
两个例题的运行结果都是编入机器后得出来的。 展开
int a=0,b=1,c=0;
if(a&&++b)c++;
printf("%d,%d\n",b,c);
运行结果:0,0.
例题;2.
int a=0,b=1,c=0;
if(a&&b++)c++;
printf("%d,%d\n",b,c);
运行结果:1,0.
我不理解的地方:&&运算符,X&&Y,当X,Y两个都为非0时结果才会为真。
既然这样,回到例题中,a的值既然为0了,0&&(任何值)结果都为0,
那就是说只要系统 一取到a的值为0时,就能得出结果为0了,
后面的++b或b++应该没有必要再去运算,可是为何例题2中,还会去运算b++呢?
两个例题的运行结果都是编入机器后得出来的。 展开
展开全部
你理解对了
都不走自加
所以例题1错了
应该都是1,0
都不走自加
所以例题1错了
应该都是1,0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的理解没问题啊,第二题的b本来就是1
倒是第一题,输出感觉也应该是1,0才对
倒是第一题,输出感觉也应该是1,0才对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询