【好程序员笔记分享】—— C语言中的宏定义
2015-06-17 16:39
288 查看
前面的文章中,我们学过了函数,今天我们来学习宏定义。先来看一个简单的例子:
#include <stdio.h>
#define average(a,b) ((a+b)/2)
int main()
{
int a = average(8,16);
printf("平均值是:%d",a);
return 0;
}
我们定义宏的时候,一般形式是这样的:#define 宏名 字符串 (注意:后面不要带分号)。注意((a+b)/2)中,一定要带括号,不然会出现一些意想不到的结果。比如,下面的代码就是不带括号导致输出结果不是原来想要的结果。
#include <stdio.h>
#define sum(a,b) a+b
int main()
{
int a = sum(8,12)/sum(1,3);
printf("%d",a);
return 0;
}
由于第2行中a+b没有带括号导致计算结果为23,正常下我们想要的结果是5。只需要在第二行a+b加上括号,更改为#define sum(a,b) ((a)+(b))即可。这样结果就是5了。
今天就学这么多,明天继续。
#include <stdio.h>
#define average(a,b) ((a+b)/2)
int main()
{
int a = average(8,16);
printf("平均值是:%d",a);
return 0;
}
我们定义宏的时候,一般形式是这样的:#define 宏名 字符串 (注意:后面不要带分号)。注意((a+b)/2)中,一定要带括号,不然会出现一些意想不到的结果。比如,下面的代码就是不带括号导致输出结果不是原来想要的结果。
#include <stdio.h>
#define sum(a,b) a+b
int main()
{
int a = sum(8,12)/sum(1,3);
printf("%d",a);
return 0;
}
由于第2行中a+b没有带括号导致计算结果为23,正常下我们想要的结果是5。只需要在第二行a+b加上括号,更改为#define sum(a,b) ((a)+(b))即可。这样结果就是5了。
今天就学这么多,明天继续。
相关文章推荐
- C++智能指针auto_ptr
- C++实现Dijkstra算法
- 素数问题
- C语言----文件读取
- C语言获取汉字拼音首字母
- c++11类的就地初始化问题
- C语言----内存区划分
- C语言----指针
- 谈 C++ 中的 new/delete 和 new[]/delete[]
- C语言----宏
- C++ find 函数用法
- C++命名空间 namespace的作用和使用解析
- POJ 1581 A Contesting Decision
- 对比文件MD5差异并保存
- 条款05:了解C++默默编写并调用哪些函数
- C++11 标准新特性: 右值引用与转移语义(点评)
- How to Properly Write Received UDP Audio Data to ALSA with C++
- C++ 12.1 类的定义、声明、成员函数、数据成员
- 《The Design and evolution of C++》读书笔记1
- 收藏:c语言的多线程同步