>第 4 章 分支语句>if语句>习题

梁毅 liangyicool@gmail.com
2009-04-17 14:12:12

好像编译都通不过呀
int foo(void){ 
if (x > 0); //line 1
  printf("x is positive.\n");// line 2
}
int main(void){
foo(); 
}
把line1 和line2 直接放在main里面也通不过。



宋劲杉 songjinshan@akaedu.org
2009-04-18 08:40:42

变量x都没定义能编译过么


asdf sdfasd@dd.com
2009-06-01 17:13:15

asdfasd


kid tianxiangkid@hotmail.com
2009-07-17 11:37:09

作者的意思是想说if语句后面不能直接跟分号吧~,我是菜鸟,以前犯过这个错误,for后面也直接跟过分号~


kid tianxiangkid@hotmail.com
2009-07-17 11:44:35

还是我。。。你的意思难道是想输出
"-1 is positive" ??


宋劲杉 songjinshan@akaedu.org
2009-07-25 18:43:54

“作者的意思是想说if语句后面不能直接跟分号吧~”
这个是正解。


fone hellozyf@gmail.com
2009-07-30 10:07:21

鄙人之见:
  if (x > 0 )后面的;号是个null statement
  由于int x = -1,so (x > 0) is false ,
  即执行null statement后面的printf语句

  输出应该是-1 is a positive.


苏杰 fninerest@gmail.com
2009-08-11 04:15:14

#include <stdio.h>

void foo(int x)
{
        if (x > 0)
                printf("x is positive.\n");
}

int main(void)
{
        int x = -1;
        foo(x);
        return 0;
}

if句后没加分号 一楼格式的改良 这个应该对了吧


尹志伟 zhiweiyin1985@gmail.com
2009-08-12 09:24:13

本节中,您提到了“语句块中也可以定义局部变量”。
但是,实际使用中,有些编程环境中,所有的变量定义都必须在程序的执行语句前定义。而不能想VC下面那样,编程过程中,需要了再定义。
不知这个问题如何理解?是VC中允许例外吗?C标准中怎么规定的呢?


宋劲杉 songjinshan@akaedu.org
2009-08-12 22:24:48

这个问题我已经解释清楚了。你回去重看第3章。


Laciq dd@qq.com
2009-10-04 22:21:20

我被忽悠了,没看见分号。


ray bimoshi@163.com
2010-02-08 14:51:18

“作者的意思是想说if语句后面不能直接跟分号吧~”
怎么不能跟分号,跟分号只是表示if分支里没做任何操作而已。
这个应该输出x is a positive.


宋金殿 songjindian.kobe@yahoo.com.cn
2010-03-18 16:40:04

这个题目有一定的迷惑性,因为最后的一句话printf的执行并不受if语句的影响,if语句后面有个“;”,就表明控制语句的后面是一个空语句!


crow crow@hotmail.com
2010-03-19 10:06:29

 34 main ()
 35 {
      int x;
      x=-1;
      if (x>0) {
          /*code */
      }
      printf("x is a positive");

因为控制语句后面返回空语句
返回的结果也是正确的。(只是不是我们想要的:-)!


crow crow@hotmail.com
2010-03-19 10:11:28

 main ()
 {
     int x;
     x=-1;
     if (x>0) {
         /*code */
     }
     printf("x is a positive");
 }

不好意思!因为网速。上面排版 -_-!


xujun xxjj2003@gmail.com http://www.hznovel.com/nowwelldba
2010-04-02 10:19:10

if 语句多了个分号。


manxisuo manxisuo@gmail.com
2010-05-25 17:17:32

if 后面可以跟分号, 但是跟了分号后就没什么作用了, 而且导致结果错误.


陈yaocheng yiyu89103@126.com
2010-07-09 20:53:23

程序段编译能通过,执行也不出错,但是执行结果不正确,是一个语义错误"if (x > 0);"但是这并没有违背c的规则,所以编译可以通过。


赵广兴 guangxingzhao@gmail.com http://www.xingxingjia.com/
2010-07-14 16:31:30

分号应该是有作用的,表示一条空语句,


其实是老师的排版缩进迷惑了大家,

int x = -1;

if (x > 0)
   { 
        ; 
   }

printf("x is positive.\n");


苍榕 cang_rong@126.com
2010-09-11 10:18:34

第三类错误是逻辑错误和语义错误。如果程序里有逻辑错误,编译和运行都会很顺利,看上去也不产生任何错误信息,但是程序没有干它该干的事情,而是干了别的事情。当然不管怎么样,计算机只会按你写的程序去做,问题在于你写的程序不是你真正想要的,这意味着程序的意思(即语义)是错的。找到逻辑错误在哪需要十分清醒的头脑,要通过观察程序的输出回过头来判断它到底在做什么。


刘明斌 331803070@qq.com http://www.baidu.com/s?wd=URL&rsv_bp=0&rsv_spt=3&inputT=1000
2011-09-25 14:35:37

新手ds


LILI 331803070@qq.com http://user.qzone.qq.com/331803070?ADUIN=331803070&ADSESSION=1316924756&ADTAG=CLIENT.QQ.3721_MyInfo_PersonalInfo.0&ptlang=2052
2011-09-25 14:37:10

int x == -1;


LILI 331803070@qq.com http://user.qzone.qq.com/331803070?ADUIN=331803070&ADSESSION=1316924756&ADTAG=CLIENT.QQ.3721_MyInfo_PersonalInfo.0&ptlang=2052
2011-09-25 14:48:13

int x == -1;
    if (x>0)
    printf("...");
可以这样改吗


wangzhengyi 15866883396@126.com
2011-10-08 16:17:44

这样改了之后,由于判断条件不成立,输出的仍是x is positive


陈新伍 cxw19870202@163.com
2011-12-12 17:35:14

if后面有一个分号,下面的语句又往前缩进了。。考眼力。。。


caozhjie czj627@126.com
2011-12-23 21:17:43

 ;是C语言的一个操作符,它的作用告诉程序先把目(;)前的工作做完,再去做后面的事情。
强调的这一点,就不容易犯类似的错误了。


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!