c程序预处理器的设计与实现_C预处理器-能力问题与解答
c程序预处理器的设计与实现
C programming Pre-processor Aptitude Questions and Answers: In this section you will find C Aptitude Questions and Answers on Pre-processor topics like #define, #undef, #if, #endif etc.
C编程预处理程序能力问题和解答:在本节中,您将找到有关预处理程序主题的C能力倾向问题和解答,例如#define,#undef,#if,#endif等。
#include <stdio.h>
int main()
{
#ifdef debug
printf("Start debugging...");
#endif
printf("IncludeHelp");
return 0;
}
Start debugging...IncludeHelp
IncludeHelp
Error
debug
IncludeHelp
debug macro is not define.
开始调试...包括帮助
包括帮助
错误
调试
包括帮助
调试宏未定义。
#include <stdio.h>
#define MAX 100
int main()
{
#define MAX 20
printf("MAX=%d...",MAX);
return 0;
}
Error
MAx=100...
MAx=20...
MAX=10020
MAX=20...
A macro can be redefine any where.
错误
MAx = 100 ...
MAx = 20 ...
最大值= 10020
MAX = 20 ...
宏可以在任何地方重新定义。
#include <stdio.h>
#define FUN(x) x*x
int main()
{
int val=0;
val=128/FUN(8);
printf("val=%d",val);
return 0;
}
2
128
64
1
128
Consider the expression...
val=128/FUN(8) => will expand val=128/8*8
According to the operator associativity "/" will evaluate first so expression will be val=(128/8)*8=>128
2
128
64
1个
128
考虑一下表达式...
val = 128 / FUN(8)=>将展开val = 128/8 * 8
根据运算符的关联性,“ /”将首先计算,因此表达式将为val =(128/8)* 8 => 128
#include <stdio.h>
#define FUN(x,y) x##y
int main()
{
int a1=10,a2=20;
printf("%d...%d",FUN(a,1),FUN(a,2));
return 0;
}
Error
10...10
20...20
10...20
10...20
we can concatenate variable like this x##y .. (a##1=a1).
错误
10 ... 10
20 ... 20
10 ... 20
10 ... 20
我们可以像x ## y ..(a ## 1 = a1)那样连接变量。
#include <stdio.h>
#define LARGEST(x,y) (x>=y)?x:y
int main()
{
int a=10,b=20,l=0;
l=LARGEST(a++,b++);
printf("a=%d,b=%d,largest=%d",a,b,l);
return 0;
}
a=10,b=20,largest=20
a=11,b=21,largest=20
a=11,b=21,largest=21
a=11,b=22,largest=21
a=11,b=22,largest=21
Consider the expression
(x>=y)?x:y => will expand with values a++ and b++
(a++ >= b++)? a++ : b++; here (10 >= 20 )?11:21; [largest will be 21..]
Since b++ is executing 2 times so value of b will be 22.
a = 10,b = 20,最大= 20
a = 11,b = 21,最大= 20
a = 11,b = 21,最大= 21
a = 11,b = 22,最大= 21
a = 11,b = 22,最大= 21
考虑表达
(x> = y)?x:y =>将使用值a ++和b ++扩展
(a ++> = b ++)? a ++:b ++; 这里(10> = 20)?11:21; [最大为21 ..]
由于b ++执行2次,因此b的值为22。
#include <stdio.h>
#define OFF 0
#if debug == OFF
int a=11;
#endif
int main()
{
int b=22;
printf("%d...%d",a,b);
return 0;
}
11...22
Error
11...11
22...22
11...22
Undefined macro has 0, you can use undefined macro name in #if...#endif.
11 ... 22
错误
11 ... 11
22 ... 22
11 ... 22
未定义的宏有0,您可以在#if ...#endif中使用未定义的宏名称。
#include <stdio.h>
#define TEXT IncludeHelp
int main()
{
printf("%s",TEXT);
return 0;
}
IncludeHelp
TEXT
Error
TEXT IncludeHelp
Error : 'IncludeHelp' undeclared identifier.
Consider the statement printf("%s",TEXT); , TEXT is a macro will expand like printf("%s",IncludeHelp);, in this statement IncludeHelp should be an identifier.
包括帮助
文本
错误
TEXT IncludeHelp
错误:“ IncludeHelp”未声明的标识符。
考虑语句printf(“%s”,TEXT); ,TEXT是一个宏,它将像printf(“%s”,IncludeHelp)一样展开; ,在此语句中,IncludeHelp应该是一个标识符。
#include <stdio.h>
#define VAR1 VAR2+10
#define VAR2 VAR1+20
int main()
{
printf("%d",VAR1);
return 0;
}
VAR2+10
VAR1+20
Error
10
Error : 'VAR1' undeclared identifier.
VAR2 + 10
VAR1 + 20
错误
10
错误:“ VAR1”未声明的标识符。
#include <stdio.h>
#define SUM(x,y) int s; s=x+y; printf("sum=%d\n",s);
int main()
{
SUM(10,20);
return 0;
}
sum=30
10,20
Error
sum=0
sum=30
Here SUM(10,20) will be expanded as int s; s=10+20; printf("sum=%d",s);
Hence sum=30 will print.
In same example, if you call SUM() again, you will get an error 's' redefinition.
总和= 30
10,20
错误
总和= 0
总和= 30
在这里, SUM(10,20)将被扩展为int s; s = 10 + 20; printf(“ sum =%d”,s);
因此将打印sum = 30。
在同一示例中,如果再次调用SUM(),则会得到错误的's'重定义。
#include <stdio.h>
#define MAX 99
int main()
{
printf("%d...",MAX);
#undef MAX
printf("%d",MAX);
return 0;
}
99...0
99...99
Error
MAX...MAX
Error: 'MAX' undeclared identifier
After #undef you can not use that macro.
99 ... 0
99 ... 99
错误
最大...最大
错误:“ MAX”个未声明的标识符
#undef之后,您将无法使用该宏。
翻译自: https://www.includehelp.com/c-programs/c-pre-processor-aptitude-questions-and-answers.aspx
c程序预处理器的设计与实现
c程序预处理器的设计与实现_C预处理器-能力问题与解答相关推荐
- 安卓的用户实时预览Figma设计稿的方法
实时预览功能对于UI设计师来说非常重要.它可以帮助他们更快速.更直观地查看设计稿的效果,从而更快地修正设计问题,提高工作效率. 通过实时预览,你可以检查设计是否符合预期,确保元素之间的对齐方式.字体大 ...
- node.js云学堂微信小程序学习系统的设计与实现毕业设计源码011735
Node.js云学堂微信小程序 摘要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课 ...
- SSM+微信小程序网易云音乐设计与实现 毕业设计-附源码261620
基于SSM微信小程序的网易云音乐 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序 ...
- SSM+mysql+微信小程序网易云音乐设计与实现 毕业设计-附源码261620
基于SSM微信小程序的网易云音乐 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序 ...
- (附源码 )SSM+mysql+微信小程序网易云音乐设计与实现 毕业设计261620
基于SSM微信小程序的网易云音乐 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序的 ...
- 从零开始设计RISC-V处理器——单周期处理器的设计
系列文章目录 (一)从零开始设计RISC-V处理器--指令系统 (二)从零开始设计RISC-V处理器--单周期处理器的设计 (三)从零开始设计RISC-V处理器--单周期处理器的仿真 (四)从零开始设 ...
- 校园二手交易商城系统小程序-JAVA【数据库设计、源码、开题报告】
第一章 绪 论 1.1选题背景 互联网是人类的基本需求,特别是在现代社会,个人压力增大,社会运作节奏高,随着互联网的快速发展,用户的需求也越来越高,用户也将越来越多依靠互联网而不是自己获取信息,使得各 ...
- 微信小程序网易云音乐设计与实现 毕业设计-附源码261620
基于SSM微信小程序的网易云音乐 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序的 ...
- Python图片相册批处理器的设计与实现批量添加图片水印、批量命名等功能
课题研究使用Python语言开发一个包含批量添加图片水印.批量命名等功能的图片批处理程序,功能模块大概包含以下模块: (1)首页模块:首页是整个软件的初始页面,包含用户登录.注册.关于本软件等功能,用 ...
最新文章
- Ubuntu12.10 安装Nessus
- 送一台自用笔记本电脑!新款
- java 对线程进行事务控制_Java 多线程事务回滚 ——多线程插入数据库时事务控制...
- 支付巨头Visa宣布计划在巴西将加密货币服务引入传统银行
- oracle not in 改为 not exist
- 第七章 课后习题P206
- 6月16日!蒋江伟深度解读基础云产品生态战略 | 凌云时刻
- 使用卡方分箱进行数据离散化-python实现
- mui登录模板源码解
- 面试必备:消息队列原理和选型(荣耀典藏版)
- c语言大作业点歌系统,基于C语言的KTV点歌系统
- 不用恢复出厂设置啦,联想电脑YogaDuet如何升级win11?在BIOS开启加载系统初始值 打开Intel Platform Trust开启TMP2.0更新win11
- 小程序:选举投票问题未知行数输入问题(含代码)
- 九步确定你的人生目标和制定达到目标的计划
- Caffe2 - (二十四) Detectron 之 utils 函数(2)
- 中标麒麟桌面版7.0 u盘安装
- # 科研牛人告诉研究生怎么看文献,怎么写论文csdn
- EF BB BF 文本文件开头 iniparser
- Pycharm 引入类报错Unresolved reference ‘attempt_load‘
- java短信模板设计,全网疯传
热门文章
- 去哪里找与计算机相关的外文,找计算机相关的外文翻译
- android preferenceactivity 源码,PreferenceActivity PreferenceScreen (3.0/API 11 以前)
- android自带下拉阻尼动画,android 有阻尼下拉刷新列表的实现方法
- 弱电工程集成商_弱电工程楼宇自控系统基础知识培训资料
- html jq 控制显示密码,js、jquery分别实现点击密码输入框密码显示和隐藏
- Python二级笔记(2)
- latex表格名的引用问题
- JDK源码解析之Java.util.Collections
- C#委托、类和事件的验证【C#】
- 016 pickle