1.在x86系统下,输出的值为多少? 为什么?
// test3.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
int main()
{
int a[5]={1,2,3,4,5};
int *ptr1 = (int *)(&a+1);
int *ptr2 = (int *)((int)a + 1);
printf("%x,%x",ptr1[-1],*ptr2);
getchar();
return 0;
}
2
分别用一个常数表示不同颜
色:
enum Color
{
GREEN = 1,
RED,
BLUE,
GREEN_RED = 10,
GREEN_BLUE
}ColorVal;
其中各常量名代表的数值分别为:
GREEN = 1
RED = 2
BLUE = 3
GREEN_RED = 10
GREEN_BLUE = 11
.枚举与#define 宏的区别:
1),#define 宏常量是在预编译阶段进行简单替换。枚举常量则是在编译的时候确定其值。
2),一般在编译器里,可以调试枚举常量,但是不能调试宏常量。
3),枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个。
两个问题:
A ),枚举能做到事,#define 宏能不能都做到?如果能,那为什么还需要枚举?
B),sizeof (ColorVal)的值为多少?为什么?
3.typedef 和 define 的区别
A)#define INT32 int
unsigned INT32 i = 10;
B)typedef int int32;
unsigned int32 j = 10;
A正确B不正确;
把B改为
typedef unsigned int int32;
int32 j = 10;
编译就能通过
C)#define PCHAR char*
PCHAR p3,p4;
D)typedef char* pchar;
pchar p1,p2;
两组代码编译都没有问题,但是,这里的p4 却不是指针,仅仅是一个char 类型的字符。
这种错误很容易被忽略,所以用#define 的时候要慎之又慎。