第6题  设有声明和语句

­            int  m = −1;

­            m = printf(″hello\n″);

那么下列陈述正确的是

­      A    m的值为5

­      B    m的值为6

­      C    m的值为−1

­      D    printf不能出现在赋值号=的右边

答案  B

解析

考查函数printf返回值的意义。如果理解或记住了下面的知识点,就不难选择。

知识点

① printf是库函数,它的返回值是实际输出的字符个数,若发生错误则返回负值。既然有返回值,当然允许出现在赋值号=的右边。

② 语句m = printf(″hello\n″);执行后,输出5个可见字符hello和1个不可见的换行符,因此printf的返回值是6,继而将该返回值6赋于变量m,最终使得m的值为6。

练习题

试为自己设计一道孪生题,举一反三。

孪生题  设有声明和语句

­            int  m = 0;

­            m = printf(″hello\n\a″);

那么下列陈述正确的是

­      A    m的值为5

­      B    m的值为6

­      C    m的值为7

­      D    printf不能出现在赋值号=的右边

答案  C

解:

′\a′是不可见的响铃符,printf输出′\a′,屏幕无显示,但会使电脑扬声器发出″嘟″的一声。′\a′、′\n′ 等不可见字符均被累加于printf的返回值之内。

返回