【无标题】

1.? 

#include <stdio.h>
#define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) 
int main()
{
        int x = 5;
        int y = 8;
        int z = MAX(x++,y++);
        printf("x=%d y=%d z=%d\n",x,y,z);
        return 0;
}

MAX宏可以证明具有副作用的参数所引起的问题,观察下面代码,你认为它将打印什么

x=6 y=10 z=9

说明:  MAX(x++,y++) 预编译替换为: ((x++) > (y++) > (x++) : (y++)) , x++和y++都是后缀++所以先比较后++,
所以x=5 y=8 条件表达式为假(比较后x=6,y=9),执行y++,由于是后置++所以先返回9,然后y=10

 2.

typedef int * int_p;
int_p x,y; //这里x、y都是int*指针类型

#define int_p int *
int_p x,y; //预编译替换为:int * x,y;   这里x为int*指针类型,而y为int类型

3.?四、命令行定义 

4.

5.3 是否被定义

#if defined(symbol)
#ifdef symbol
说明:上面两条语句等价
功能:当symbol符号存在,则编译#if与#endif之间语句
在这里插入图片描述

 #if !defined(symbol)
#ifndef symbol
说明:上面两条语句等价
功能:当symbol符号不存在,则编译#if与#endif之间语句
在这里插入图片描述

5. 

#ifndef _HEADERNAME_H
	#define _HEADERNAME_H
	//头文件内容
#end

 当头文件第一次被包含时,_HEADERNAME_H未定义,条件判断为真,使用宏定义_HEADERNAME_H,并包含头文件内容。如果头文件再次被包含,条件判断为假,头文件内容不会再次被包含。
_HEADERNAME_H :按照头文件名进行取名,以避免其他头文件使用相同的名字而引起冲突。如头文件add.h, 则 _ADD_H
6.

在学习数据结构栈这一部分的时候,有一句代码
if (!S.base)exit(OVERFLOW);
搞不懂什么意思
exit是c++程序的退出函数,声明为void exit(int value)
其功能是退出当前的程序,并将参数value返回主调进程
OVERFLOW为math.h的一个宏定义,其值为3。含义为运算过程中出现了上溢,即运算结果超出了运算变量所能存储的范围。
所以,exit(OVERFLOW)的含义就是,退出程序,并返回OVERFLOW的值给主调进程。其标准的使用范围为,当程序运算出现上溢时,退出程序并报错给主调进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值