C语言编译预处理#define(x,y)语句中x*y 、(x)*(y)、(x*y)的问题
题目代码如下
# include<stdio.h>
# define MUL1(x,y)x*y
# define MUL2(x,y)(x)*(y)
# define MUL3(x,y)(x*y)
main(){int m=2,n=3;printf("%d\n", MUL1(m,m+n)*5);printf("%d\n", MUL2(m,m+n)*5);printf("%d\n", MUL3(m,m+n)*5);
}
请预测输出的三个数值
结果为19,50,35
是不是人傻了,我在网上找半天都没找到解析,烦的一批,只好自己探究规律了。
经过几分钟的研究,我结合能找到的资料大致推测出计算规则如下
# define MUL1(x,y)x*yprintf("%d\n", MUL1(m,m+n)*5);
这一组语句可以理解为x*x+y*5
# define MUL2(x,y)(x)*(y)printf("%d\n", MUL2(m,m+n)*5);
这一组语句可以理解为x*(x+y)*5
# define MUL3(x,y)(x*y)printf("%d\n", MUL2(m,m+n)*5);
这一组语句可以理解为(x*x+y)*5
我也不是太懂,如果有大佬看到,麻烦在评论区给大家普及一下
C语言编译预处理#define(x,y)语句中x*y 、(x)*(y)、(x*y)的问题相关推荐
- 2.c语言编译预处理,c语言第03章-编译预处理2.ppt
c语言第03章-编译预处理2 第3章 编译预处理 编译预处理是指,编译时,首先对编译预处理命令进行处理,然后再将预处理后的中间结果进行编译,以得到目标代码. 教学目的: 掌握#define.#incl ...
- c语言预处理命令12个,C语言编译预处理和预处理命令
1.预处理概念:编译程序时,编译器将对程序文件作至少两个阶段的编译预处理,预处理程序预处理阶段和编译程序预处理阶段. 预处理程序预处理阶段:C预处理程序先于C编译程序运行.预处理程序从前向后根据预处理 ...
- c语言 switch 单引号,在switch语句中表示单引号的错误
我必须删除文件中的所有注释.引号内的注释分隔符应视为文本,并且必须打印到屏幕上.评论内的评论被视为其他评论,必须删除.在switch语句中表示单引号的错误 我在遇到下面的switch语句时遇到了单引号 ...
- c语言编译预处理指令大全,C语言预处理指令
「今天是学习C语言第 32 天」 当你选择了一种语言,意味着你还选择了一组技术.一个社区.--Joshua Bloch # 预处理 C语言源程序先经过预处理器进行预处理,之后经过编译器编译成二进制可执 ...
- c语言编译kbhit出现问题,在VC++中运行出现error C2065: 'kbhit' : undeclared identifier,什么意思?怎么调试?...
在VC++中运行出现error C2065: 'kbhit' : undeclared identifier,什么意思?怎么调试?0 yareate2013.04.08浏览493次分享举报 #defi ...
- C语言逗号表达式在for循环语句中的使用
先直接举出逗号表达式一般的例题 #include <stdio.h> void main(){int a;printf("%d\n",(a=3*5,a*4,a+5)); ...
- R语言使用ODBC连接数据库PostgreSQL查询语句中含有处理方法
2019独角兽企业重金招聘Python工程师标准>>> #无法查询,表名称不正确 > result <- sqlQuery(PostgreSQLConnection,&q ...
- c语言 case常量表达式,在switch语句中,每一个case的常量表达式的值必须互不相同。()...
值必不属特性真正质量的是以下于手机的. <安八十条规全生>第定产法,句中构成的犯罪,2万)万投资下的对个人经人处罚款营的元以元以上(,刑事追究责任够刑罚的依法尚不事处. 密集安部他特型的国 ...
- 宏定义处理特殊字符 -_c语言编译与预处理命令
所谓预处理,是指源文件在进行编译的第一遍扫描之前所作的工作,由预处理程序完成.当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分进行处理,处理完毕自动进入对源程序的编译. 在前面 ...
- picf509c语言程序,樊媛媛c语言程序设计09编译预处理.pptx
樊媛媛c语言程序设计09编译预处理 9.1 宏定义 1.不带参的宏定义用一个指定的标识符(宏名)代表一个字符串.一般形式:#define 标识符 字符串如:#define PI 3.1415926有了 ...
最新文章
- 介绍三种绘制时间线图的方法
- Git问题Everything up-to-date解决
- C#中几种换行符,不同操作系统各不相同【转】
- win32 API 遍历一个目录下的文件
- 计算机2级access,计算机二级-Access-窗体的设计视图
- Scala - 快速学习08 - 函数式编程:高阶函数
- CSS/DIV网页设计视频教程目录【转】
- java 方法注解_使用Java注解不正确的方法
- 优酷html5视频网站,国内主要视频网站的嵌入方式
- SAS基础练习(一)
- PhotoShop插件的开发
- Win7系统屏保也可以当桌面壁纸
- 计算机主板纽扣电池缺电,主板的纽扣电池没电了怎么更换
- 华为服务器管理工具uMATE
- 零基础的小白入门,SQL数据库与Python先学哪个更好呢?
- [SCOI2014]方伯伯的玉米田
- 社会人文跨计算机考研,各位跨专业考研党,不要违反这个规则,不然结果会让人遗憾...
- r语言中将茎叶图旋转90度_R语言(02)绘图
- java计算机毕业设计商场VIP管理系统源码+系统+数据库+lw文档+mybatis+运行部署
- Python中字符串的迷幻操作-----驻留机制的理解
热门文章
- 计算机音乐苹果手机,iPhone手机音乐如何导出电脑?
- 用.net制作排序、分页及多条记录选择及删除的范例(不用.net内置的分页和排序机制)
- 记大三第一学期10-1出游宜昌
- android跑马灯效果不起作用,Android实现跑马灯效果的方法
- 简单的一种图像冷暖色温转换(MATLAB)
- Linux/ Unix 键盘检测程序
- [Objective-C] 010_Foundation框架之NSSet与NSMutableSet
- C# async / await 任务超时处理
- IT 女生对未来职业的一点思考
- Java 八皇后游戏