正在加载图片...
为该函数可能返回任何字符值(包括EOF),如果将该返回值截为char 型,则非EOF字符可能被误为EOF,而EOF可能又被截为其它字符。 3.5你如何理解 ANSI C将输入输出定义为“流”? 答:这是 ANSI C对I/0概念的高度抽象。就C程序而言,所有的 Ⅰ/0操作只是简单地从程序移进或移出字符的事情。这些字节就像树 叶落入溪流中,一个接一个排列着向前流动。因此,输出时,你只需 要关心将数据放入“流”中,输入时,你关心的是正确解释读入的数 据 3.6下列三个 printf语句是否等价? char p ="Hello! printf(Hello! " printf(p) printf("%s", p) 答:等价 3.7考察下面的程序段,你认为它可能存在什么问题? char chI=a, ch2=B scanf(%d",&ch1) printf (chI = %C, ch2=%c\n", chl, ch2) 答:根据 scanf格式串的要求, scanf需要一个指向整型的指针, 但这里它实际得到的是一个字符(ch1)指针。问题在于 scanf并不 知道它没有得到它所需要的,于是它将&ch1看作是一个指向整型的 指针并将一个整数存放在那里。设 sizeof(char)=1,为该函数可能返回任何字符值(包括 EOF),如果将该返回值截为 char 型,则非 EOF 字符可能被误为 EOF,而 EOF 可能又被截为其它字符。 3.5 你如何理解 ANSI C 将输入输出定义为“流”? 答:这是 ANSI C 对 I/O 概念的高度抽象。就 C 程序而言,所有的 I/O 操作只是简单地从程序移进或移出字符的事情。这些字节就像树 叶落入溪流中,一个接一个排列着向前流动。因此,输出时,你只需 要关心将数据放入“流”中,输入时,你关心的是正确解释读入的数 据。 3.6 下列三个 printf 语句是否等价? char *p = "Hello!"; printf("Hello!"); printf(p); printf("%s",p); 答:等价。 3.7 考察下面的程序段,你认为它可能存在什么问题? char ch1 = ’A’, ch2 = ’B’; scanf("%d",&ch1); printf("ch1 = %c,ch2 = %c\n",ch1,ch2); 答:根据 scanf 格式串的要求,scanf 需要一个指向整型的指针, 但这里它实际得到的是一个字符(ch1)指针。问题在于 scanf 并不 知道它没有得到它所需要的,于是它将&ch1 看作是一个指向整型的 指针并将一个整数存放在那里。设 sizeof(char)==1
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有