题目:
1 、请填写 bool , float, 指针变量 与"零值"比较的if 语句。
提示:这里"零值"可以是 0, 0.0 , FALSE 或者"空指针" 。例如 int 变量 n 与"零值"比较的 if 语句为:
(1)请写出bool flag 与"零值"比较的 if 语句:
(2)请写出float x与"零值"比较的if 语句:
(3)请写出 char *p 与"零值"比较的 if 语句
2、以下为 Linux下的 32 位 C程序,请计算 sizeof 的值。
c
char str[] = "Hello" ;
char *p = str ;
int n = 10;
请计算:
(1)sizeof (str ) = (2)sizeof ( p ) = (3)sizeof ( n ) =
3、long a=0x801010; a+5=?
4、用变量a给出下面的定义
e) 一个有10个指针的数组,该指针是指向一个整型数的;
f) 一个指向有10个整型数数组的指针 ;
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;
5、设有以下说明和定义:
c
typedef union {
long i ;
int k[5];
char c;
} DATE;
struct data {
int cat;
DATE cow;
double dog;
} too;
DATE max;
则语句 printf ("%d", sizeof( struct date)+ sizeof(max));的执行结果是
答案
1、
c
(1)if ( flag ) if ( !flag )
(2)const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON)
不可将浮点变量用"=="或"!="与数字比较,应该设法转化成">="或"<="此类形式。
(3)if (p == NULL) if (p != NULL)
2、
c
(1)6、(2)4、(3)4
3、
c
0x801010用二进制表示为:"1000 0000 0001 0000 0001 0000",十进制的值为8392720,再加上5就是8392725。
4、
c
e)int * a[10];
f)int (*a)[10]
g)int (*a)(int);
h) int (*a[10])(int)
5、
c
DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20
data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.
20 + 32 = 52.