C语言的问题懂的帮解答下谢谢~~

来源:百度知道 编辑:UC知道 时间:2024/05/31 02:59:55
main()
{
int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c+=1;
printf("%d\n",c);
}
这个程序的输出结果是2为什么?
if(a<b)
if(b<0) c=0;
如果改成:
if(a<b)
{if(b<0) c=0;}
结果是3,这个大括号的问题我理解如果不加大括号的话else语句将与里他最近不带else语句的if语句配对,如果是这样的话那么不应该是if(a<b)就没用了
if(b<0) c=0;
else c+=1;
为一个语句了?那么b<0时应该执行c=0为什么最后输出的结果是2
明白的朋友帮助回答下,不懂的就不要乱发言了谢谢~~
第二位朋友回答的够清楚谢谢~~~ zylovemqz 朋友你不懂编程吧..

main()
{
int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c+=1;
printf("%d\n",c);
}
这个程序的输出结果是2为什么?

main()
{
int a=2,b=-1,c=2;
if(a<b)
{
if(b<0) c=0;
else c+=1;
}____________________//if(a<b)不成立,所以后面的{ }也不成立,这几行等于没写,所以C还是2
printf("%d\n",c);
}

if(a<b)
if(b<0) c=0;
如果改成:
if(a<b)
{if(b<0) c=0;}
结果是3,这个大括号的问题我理解如果不加大括号的话else语句将与里他最近不带else语句的if语句配对,如果是这样的话那么不应该是if(a<b)就没用了
if(b<0) c=0;
else c+=1;
为一个语句了?那么b<0时应该执行c=0为什么最后输出的结果是2
______________________________//b<0的前提是a<b,这个前提都不成立,所以b<0无意义
明白的朋友帮助回答下,不懂的就不要乱发言了谢谢~~

现在主要就是下面一段代码的问题
if(a<b)
if(b<0) c=0;
else c+=1;
对吧??
在没有{}时
由于a是大于b的,所以if的()中的条件不成立
又因为在第一个if的()后面没有;所以)后面的内容是当()中条件满足时应该执行的内容
现在不满足,所以不执行
又因为后一个if和else凑成了