ps 2c语言程序,C语言基础(二)
## #ifdef的形式
预处理程序提供了条件编译的功能。条件编译有三种形式,下面分别介绍。
第一种形式
第一种形式的格式为:
```#ifdef 标识符
程序段1
#else
程序段2
#endif```
功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为:
```#ifdef 标识符
程序段
#endif```#include "stdio.h"
#define NUM ok
int main(void){
struct stu{
int num;
char *name;
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));
ps->num=102;
ps->name="Zhang ping";
ps->sex='M';
ps->score=62.5;
#ifdef NUM
printf("Number=%d\nScore=%f\n",ps->num,ps->score);
#else
printf("Name=%s\nSex=%c\n",ps->name,ps->sex);
#endif
free(ps);
return 0;
}
由于在程序的第15行插入了条件编译预处理命令,因此要根据NUM是否被定义过来决定编译那一个printf语句。而在程序的第一行已对NUM作过宏定义,因此应对第一个printf语句作编译故运行结果是输出了学号和成绩。
第二种形式
第二种形式的格式为:
```#ifndef 标识符
程序段1
#else
程序段2
#endif```
与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。这与第一种形式的功能正相反。
第三种形式
第三种形式的格式为:
```#if 常量表达式
程序段1
#else
程序段2
#endif```
它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。
#include "stdio.h"
#define R 1
int main(void){
float c,r,s;
printf ("input a number: ");
scanf("%f",&c);
#if R
r=3.14159*c*c;
printf("area of round is: %f\n",r);
#else
s=c*c;
printf("area of square is: %f\n",s);
#endif
return 0;
}
本例中采用了第三种形式的条件编译。在程序第1行宏定义中,定义R为1,因此在条件编译时,常量表达式的值为真,故计算并输出圆面积。
ps 2c语言程序,C语言基础(二)相关推荐
- 经典C语言程序100例之八二
经典C语言程序100例之八二 如题 话不多说了,直接上代码 如题 [程序82] 题目:八进制转换为十进制 1.程序分析: 话不多说了,直接上代码 2.程序源代码: void main() { char ...
- 经典C语言程序100例之七二
经典C语言程序100例之七二 如题 话不多说了,直接上代码 如题 [程序72] 题目:创建一个链表. 话不多说了,直接上代码 程序源代码: /creat a list/ #include " ...
- 经典C语言程序100例之六二
经典C语言程序100例之六二 如题 话不多说了,直接上代码 如题 [程序62] 题目:学习putpixel画点. 1.程序分析: 话不多说了,直接上代码 2.程序源代码: #include " ...
- 经典C语言程序100例之五二
经典C语言程序100例之五二 如题 话不多说了,直接上代码 如题 [程序52] 题目:学习使用按位或 | . 1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 话不多说了,直接上代码 ...
- 经典C语言程序100例之四二
经典C语言程序100例之四二 如题 话不多说了,直接上代码 如题 [程序42] 题目:学习使用auto定义变量的用法 1.程序分析: 话不多说了,直接上代码 2.程序源代码: #include &qu ...
- 经典C语言程序100例之三二
经典C语言程序100例之三二 如题 话不多说了,直接上代码 如题 [程序32] 题目:Press any key to change color, do you want to try it. Ple ...
- 经典C语言程序100例之二九
经典C语言程序100例之二九 如题 话不多说了,直接上代码 如题 [程序29] 题目:给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. 程序分析:学会分解出每一位数,如下解释 ...
- 经典C语言程序100例之二六
经典C语言程序100例之二六 如题 话不多说了,直接上代码 如题 [程序26] 题目:利用递归方法求5!. 1.程序分析:递归公式:fn=fn_1*4! 话不多说了,直接上代码 2.程序源代码: #i ...
- 经典C语言程序100例之二五
经典C语言程序100例之二五 如题 话不多说了,直接上代码 如题 [程序25] 题目:求1+2!+3!+-+20!的和 1.程序分析:此程序只是把累加变成了累乘. 话不多说了,直接上代码 2.程序源代 ...
- 经典C语言程序100例之二四
经典C语言程序100例之二四 如题 话不多说了,直接上代码 如题 [程序24] 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13-求出这个数列的前20项之和. 1.程序分析:请 ...
最新文章
- 如何查看SE16N修改的表的记录
- 发布IP地址查询的WEB SERVICE
- AtCoder Beginner Contest 084(AB)
- js滚动条下拉一定值_JS逆向 | 无限Debugger之淘大象
- 墙裂推荐!2020Android阿里腾讯百度字节美团网易爱奇艺校招面试汇总
- 懒人也能变美,AR试妆会让你剁手到停不下来吗?
- CodeBlocks 的下载安装
- 超级浏览器究竟是什么?
- STM32----PWM脉宽调制信号的输出
- 将博客搬至CSDN_wuli大世界_新浪博客
- Objective-C 程序设计(第4版)
- 员工格言[付总提供]
- 一篇博客让你横扫数电常考所有集成电路芯片(已更新50%持续更新)
- whose引导的定语从句,先行词是复数形式,从句里谓语动词用单数还是复数?
- STM32RCT6芯片引脚的含义与作用
- centos离线安装docker
- hana服务器销售资质,hana认证服务器
- mysql 日志 博客,Frank的博客
- java生成ca证书_生成CA根证书的脚本
- h1283命令行下刷机法