X=-1;
Printf(%d\n",x);
}
的输出是________。
A)-1 B)0
C)1 D)不确定的值
答案:A
评析:第一个判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断……如此循环,在打印输出语句的前一行,程序给变量x赋了值,为.1,所以,无论前期如何变化,最后的x值依然为-1。
[Page: ]
(32)下面程序
main()
{
int x=32:
printf("%d\n",x=x<<1);
}
的输出是________。
A)100 B)160
C)120 D)64
答案:D
评析:<<是c语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘于2,左移两位相当于该数乘以2的2次方。所以,x<<1=32.2=64。
(33)设有以下定义和语句,输出的结果是(用small模式编译,指针变量占2个字节)_________。
struct date
{
long *cat;
struct date *next;
double dog;
}too;
printf("%d",sizeof(too));
A)20 B)16
C)14 D)12
答案:D
评析:sizeof函数计算已知类型所占的字节数。结构体变量所占内存长度是各成员占的内存长度之和。指针变量占2个字节,所以cat和*next各占2个字节;double型占8个字节,故too共占12个字节。
(34)以下程序的输出结果是_________。
#include<stdio.h>
#define FUDGE(y) 2.84+y
#define PR(a)printf ("%d",(int)(a))
#define PRINT l(a) PR(a);putchar(’\n’)