大家好!我有一个C语言程序题想请教大家,谢谢大家!!题目在下面

来源:百度知道 编辑:UC知道 时间:2024/04/29 14:12:09
main()
{
int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c+=1;
printf("%d\n",c);
}
输出结果是()
A:0 B:2 C:1 D:3
我查询答案它写的是B,但是我在TC系统运行时答案却是A,谁能告诉我真正的答案究竟是什么?理由充足者我一定给加分!!

我在CFree运行得B
else与最近的if配对,这个程序实际上是
main()
{
int a=2,b=-1,c=2;
if(a<b)
{
if(b<0) c=0;
else c+=1;
}
printf("%d\n",c);
}

你干嘛这么省花括号啊```不同的编译器可能会把代码看成下述两种,对应两种情况,答案自然是A或者B啦

if(a<b)
{
if(b<0)
c=0;
}
else
c+=1;

if(a<b)
{
if(b<0)
c=0;
else
c+=1;
}

答案是B,你可能是在if(a<b)后输入了一个分号,得出了A,题目后面是没有分号的。
答案为B的原因是if和else是嵌套对应的,题目中的else是和第二个if对应的,第一个if没有对应的else。这样,if(a<b)不成立就跳到了printf语句了。这时c没变还是2。

0吧
if(a<b||b<0)
c=0
else c+=1
是0