关于C语言刷题(#define宏定义函数的常见错误)

首先我们来先看对#define的定义

define,宏定义,C语言中预处理命令一种。分为无参宏定义和带参宏定义。无参宏定义的一般形式为:#define 宏名 字符串;带参宏定义的一般形式为:#define 宏名(参数表) 字符串;

其实#define不仅可以定义常见变量,也可以定义带参函数
在使用中一定要注意#define的边界问题(可以简单理解为数学中括号内表达式运算的法则)

在这边看一个简单的例题

#define M(x,y,z) x*y+z
main()
{int a = 1,b = 2,c = 3;printf("%d\n",M(a+b,b+c,c+a));//下列该程序的运行结果是()A   19B   17C   15D   12
}

解题过程

这边有一个注意点,就是千万不要先计算M()中的参数,而是直接将参数带入运算
计算结果如下:
a+b* b+c+c+a
= 1+2* 2+3+3+1
=12
正确答案是 D
但是博主在第一次做这道题的时候犯了一个非常低级的错误
错误计算过程如下
将M(3,5,4)
= 3*5+4
=19
选出了错误答案A
这里分享下博主自己自学C语言的新手错误
如有错误,请指出,博主会积极改正
谢谢
祝大家学习愉快

关于C语言刷题(#define宏定义函数的常见错误)相关推荐

  1. define宏定义函数及用模板函数实现同样的功能

    最近在看别人的代码的过程中,发现了宏定义代码,由于自己这块之前没有用过,所以编写了示例程序,学习一下宏定义代码. 比如我们现在有一个需求,要实现两个数字交换,这两个数字可能是整型,浮点型或者其他类型, ...

  2. c语言求n个数的最小值博客,C语言中的#define宏定义 求一组数的最大值和最小值(转)...

    C语言有很多预编译关键字,如#if.#include.#else--,所有以#开头的的关键字都属于这一类,此处讨论#define关键字 #define的核心就是"替换" 如#def ...

  3. C语言刷题系列——5.使用函数判断完全平方数

  4. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策

    一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...

  5. #define宏定义是什么?怎么写?一文搞懂。

    前言 第一次接触宏定义的时候,是在学校的C++课程大作业中.当时有幸看到了大佬写的源码,里面有很多的宏定义.当时并不了解宏定义的妙用,只感觉它像是定义了一个变量一样,不好理解还有些多此一举. 这之后在 ...

  6. C++ #define(宏定义)的使用

    C++ 宏定义 #define命令是C++语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本. 宏定义的一般形式 #define <宏名& ...

  7. define宏定义中的#,##,@#及\符号

    define宏定义中的#,##,@#及\符号 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串. 1.# (string ...

  8. 【C语言笔记】【宏定义系列】 向下舍入到指定数值的倍数

    [C语言笔记][宏定义系列] 向下舍入到指定数值的倍数 宏定义系列内容.用于记录各式各样有用或者没用的宏定义☺. 宏定义说明 用于将一个数向下舍入到小于等于该数的指定数值的倍数. 例如一个要向下舍入的 ...

  9. 【C语言笔记】【宏定义系列】 向上取整到指定数值的倍数

    [C语言笔记][宏定义系列] 向上取整到指定数值的倍数 宏定义系列内容.用于记录各式各样有用或者没用的宏定义☺. 宏定义说明 用于将一个数向上取整到大于等于该数的指定数值的倍数. 例如一个要向上取整的 ...

最新文章

  1. init 0-6 (启动级别:init 0,1,2,3,4,5,6)
  2. 2020-11-15(IEEE浮点数计算)
  3. LL-verilog索引向量+-号用法
  4. 容器化Spring Data Cassandra应用程序
  5. 优化Java序列化– Java,XML,JSON,Kryo,POF
  6. 【转】WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
  7. 深度学习 2 机器学习 神经网络 卷积神经网络
  8. Js Date对象 简单操作
  9. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据下载...
  10. Gradle下载 Jar 包
  11. 使用DISM++精简windows系统
  12. 超越QQ Mail文件中转站---大文件上传设计思路和实践 原创 王泽宾
  13. 几种常见的4K高清视频信号传输方案对比
  14. OpenCV蒙版的使用实例(1)
  15. 基于java网上体育用品商城系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  16. Mysql的分组函数
  17. 安卓Apk下载以及静默安装
  18. kotlin发音!这份字节跳动历年校招Android面试真题解析,附架构师必备技术详解
  19. 马斯克被曝摆架子/ 朱晓彤卸任特斯拉中国法人/ 苹果M2Pro首发台积电3nm...今日更多新鲜事在此...
  20. 步进电机在音乐喷泉中的应用解决方案

热门文章

  1. 电信大数据分析有什么作用
  2. -Xms512m -Xmx512m -XX:PermSize=1024M -XX:MaxPermSize=1024m
  3. 事件、卧龙首页案例及省份城市二级关联
  4. sql 语句查询 mysql 版本号
  5. mysql根据字段删除重复记录
  6. Mysql出现问题:慢查询日志失效解决方案
  7. 【VUE 表单验证】vue Element 表单验证中 多层v-for验证方法
  8. 上海建桥学院计算机网课,宅家当学霸,快来pick网课中的“神仙笔记”~
  9. win10 关键错误:开始菜单与cortana打不开
  10. 漫画法:小编悲惨的一天。