关于C语言刷题(#define宏定义函数的常见错误)
关于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宏定义函数的常见错误)相关推荐
- define宏定义函数及用模板函数实现同样的功能
最近在看别人的代码的过程中,发现了宏定义代码,由于自己这块之前没有用过,所以编写了示例程序,学习一下宏定义代码. 比如我们现在有一个需求,要实现两个数字交换,这两个数字可能是整型,浮点型或者其他类型, ...
- c语言求n个数的最小值博客,C语言中的#define宏定义 求一组数的最大值和最小值(转)...
C语言有很多预编译关键字,如#if.#include.#else--,所有以#开头的的关键字都属于这一类,此处讨论#define关键字 #define的核心就是"替换" 如#def ...
- C语言刷题系列——5.使用函数判断完全平方数
- C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策
一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...
- #define宏定义是什么?怎么写?一文搞懂。
前言 第一次接触宏定义的时候,是在学校的C++课程大作业中.当时有幸看到了大佬写的源码,里面有很多的宏定义.当时并不了解宏定义的妙用,只感觉它像是定义了一个变量一样,不好理解还有些多此一举. 这之后在 ...
- C++ #define(宏定义)的使用
C++ 宏定义 #define命令是C++语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本. 宏定义的一般形式 #define <宏名& ...
- define宏定义中的#,##,@#及\符号
define宏定义中的#,##,@#及\符号 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串. 1.# (string ...
- 【C语言笔记】【宏定义系列】 向下舍入到指定数值的倍数
[C语言笔记][宏定义系列] 向下舍入到指定数值的倍数 宏定义系列内容.用于记录各式各样有用或者没用的宏定义☺. 宏定义说明 用于将一个数向下舍入到小于等于该数的指定数值的倍数. 例如一个要向下舍入的 ...
- 【C语言笔记】【宏定义系列】 向上取整到指定数值的倍数
[C语言笔记][宏定义系列] 向上取整到指定数值的倍数 宏定义系列内容.用于记录各式各样有用或者没用的宏定义☺. 宏定义说明 用于将一个数向上取整到大于等于该数的指定数值的倍数. 例如一个要向上取整的 ...
最新文章
- init 0-6 (启动级别:init 0,1,2,3,4,5,6)
- 2020-11-15(IEEE浮点数计算)
- LL-verilog索引向量+-号用法
- 容器化Spring Data Cassandra应用程序
- 优化Java序列化– Java,XML,JSON,Kryo,POF
- 【转】WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
- 深度学习 2 机器学习 神经网络 卷积神经网络
- Js Date对象 简单操作
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据下载...
- Gradle下载 Jar 包
- 使用DISM++精简windows系统
- 超越QQ Mail文件中转站---大文件上传设计思路和实践 原创 王泽宾
- 几种常见的4K高清视频信号传输方案对比
- OpenCV蒙版的使用实例(1)
- 基于java网上体育用品商城系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- Mysql的分组函数
- 安卓Apk下载以及静默安装
- kotlin发音!这份字节跳动历年校招Android面试真题解析,附架构师必备技术详解
- 马斯克被曝摆架子/ 朱晓彤卸任特斯拉中国法人/ 苹果M2Pro首发台积电3nm...今日更多新鲜事在此...
- 步进电机在音乐喷泉中的应用解决方案
热门文章
- 电信大数据分析有什么作用
- -Xms512m -Xmx512m -XX:PermSize=1024M -XX:MaxPermSize=1024m
- 事件、卧龙首页案例及省份城市二级关联
- sql 语句查询 mysql 版本号
- mysql根据字段删除重复记录
- Mysql出现问题:慢查询日志失效解决方案
- 【VUE 表单验证】vue Element 表单验证中 多层v-for验证方法
- 上海建桥学院计算机网课,宅家当学霸,快来pick网课中的“神仙笔记”~
- win10 关键错误:开始菜单与cortana打不开
- 漫画法:小编悲惨的一天。