帮我解释一个C语言程序
#include<stdio.h>intmain(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf(...
# include<stdio.h>
int main()
{
int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2||c--!=3)
printf("%d,%d,%d\n",a,b,c);
else
printf("%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是 1,3,3
我认为是1,3,2
# include<stdio.h>
int main()
{
int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2&&c--!=3)
printf("%d,%d,%d\n",a,b,c);
else
printf("%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是 1,3,2
我认为是1,3,3
小弟不懂,求甚解!!!望大虾给予详细!!!必重谢!!! 展开
int main()
{
int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2||c--!=3)
printf("%d,%d,%d\n",a,b,c);
else
printf("%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是 1,3,3
我认为是1,3,2
# include<stdio.h>
int main()
{
int a=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2&&c--!=3)
printf("%d,%d,%d\n",a,b,c);
else
printf("%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是 1,3,2
我认为是1,3,3
小弟不懂,求甚解!!!望大虾给予详细!!!必重谢!!! 展开
10个回答
2010-08-11
展开全部
第一个程序里面,只要理解了
if(a==1&&b++==2)
if(b!=2||c--!=3)
这2句就知道了
首先,if(a==1&&b++==2),在这里b++==2先判断b==2,然后在b=b+1,所以这里的2个判断都为真,也就会执行if(b!=2||c--!=3),
而在执行这个if语句时,用的是或连接,也就是说当b!=2成立时,c--!=3是不执行的,所以c还是为3
最后输出的结果就是1,3,3了
而第二个程序里,也是理解这句就懂了
if(b!=2&&c--!=3)
在这里b!=2成立,所以就还要判断 c--!=3是否成立,而这里是先判断c!=3然后再使c--;也就得到了c=2,而它是不成立的,
最后输出结果就为1,3,2了
if(a==1&&b++==2)
if(b!=2||c--!=3)
这2句就知道了
首先,if(a==1&&b++==2),在这里b++==2先判断b==2,然后在b=b+1,所以这里的2个判断都为真,也就会执行if(b!=2||c--!=3),
而在执行这个if语句时,用的是或连接,也就是说当b!=2成立时,c--!=3是不执行的,所以c还是为3
最后输出的结果就是1,3,3了
而第二个程序里,也是理解这句就懂了
if(b!=2&&c--!=3)
在这里b!=2成立,所以就还要判断 c--!=3是否成立,而这里是先判断c!=3然后再使c--;也就得到了c=2,而它是不成立的,
最后输出结果就为1,3,2了
展开全部
if(a==1&&b++==2)为真,但b++之后b=3, 在if(b!=2&&c--!=3),b!=2对,开始c=3,c——之后c=2,但在判断中c=3,判断完之后C=2,所以if(b!=2&&c--!=3)为假,执行else,答案 1,3,2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单
原因是这样的
在C语言中,如果出现(表达式1)||(表达式2)
那么机器会自左向右执行,先执行表达式1,如果表达式1为【真】的话,那么计算机是不会执行表达式2的,因为无论表达式2是真或是假,其最终结果都是真。
这就是为什么在你写的第一个程序中没有执行c--!=3了
同理,如果出现(表达式1)&&(表达式2)时,如果表达式1为【假】的话,计算机也是不会执行表达式2的,而当表达式1为真的时候,才执行表达式2。而你第二个程序中
b!=2为真,所以计算机当然要再对C--!=3进行判断了。
这就是为什么你的第二个程序执行了C--了。
说到这里你应该懂了吧
PS:楼主这样的钻研精神很好,特别是对于编程,希望楼主继续保持哦~~~
原因是这样的
在C语言中,如果出现(表达式1)||(表达式2)
那么机器会自左向右执行,先执行表达式1,如果表达式1为【真】的话,那么计算机是不会执行表达式2的,因为无论表达式2是真或是假,其最终结果都是真。
这就是为什么在你写的第一个程序中没有执行c--!=3了
同理,如果出现(表达式1)&&(表达式2)时,如果表达式1为【假】的话,计算机也是不会执行表达式2的,而当表达式1为真的时候,才执行表达式2。而你第二个程序中
b!=2为真,所以计算机当然要再对C--!=3进行判断了。
这就是为什么你的第二个程序执行了C--了。
说到这里你应该懂了吧
PS:楼主这样的钻研精神很好,特别是对于编程,希望楼主继续保持哦~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是 133 没错;
第一次 a==1 true b++=2 true (此时 b自加后等于3)
if(3!=2||) c语言规定 “||”符号判断 如果第一个是真 则不进行后面运算 c--不执行
第一次 a==1 true b++=2 true (此时 b自加后等于3)
if(3!=2||) c语言规定 “||”符号判断 如果第一个是真 则不进行后面运算 c--不执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单,你错误是
1.if(b!=2||c--!=3)执行这个语句时,发现b!=2为真时,因是或运算,后面的语句便不需判断,因此是1 3 3;
2.if(b!=2&&c--!=3)执行这个语句时,发现b!=2为真时,因是与运算,后面的语句仍需判断,因此是1 3 2
1.if(b!=2||c--!=3)执行这个语句时,发现b!=2为真时,因是或运算,后面的语句便不需判断,因此是1 3 3;
2.if(b!=2&&c--!=3)执行这个语句时,发现b!=2为真时,因是与运算,后面的语句仍需判断,因此是1 3 2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为if(b!=2||c--!=3)是或语句,前面b!=2已经满足成立,不执行c--!=3的判断,如果将b!=2改为b!=3,则结果就是1,3,2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询