今天受到了严重的鄙视和打击。决定要学习C++。应该说以前知道也写过C++。但是今天被鄙视了,功底不足啊。个人原因确实太弱了。好吧 我的斗志被激起来了。好好学习C++。以小白的身份重新学习C++。一定要打好功底。
今天先学习番外篇。因为大白我写过一些C++程序,但是不足。然后今天受到了强烈的鄙视和打击。虽然很沮丧。但是我没有选择一开始就从头学。想先把今天受到的打击和不懂的地方先研究一下。好奇心在作祟啊。非常好奇和充满渴望的想知道答案
首先是一个宏的问题 使用宏 写一段语句来得出两个数中比较大的数。 好吧我弱爆了,这个都不会。 没关系都是从不会变成会的。大白我不灰心。虚心学习
首先呢 宏 嘛肯定是需要知道宏怎么写的或者说宏 关键字是什么。( 这个我还是知道的 嘿嘿)
#defien 定义宏的关键字 或者说写法
一个宏的定义的时候是需要这三部分的
#defien 宏的名字 (参数) 宏体
那么好,我们的题目是 需要一个传两个参数,然后比对 返回其中较大的数字的。
我们需要一个宏的名字MAX 需要两个参数a,b 然后对比
题目知道了 、需要的东西知道了、宏的写法知道了 好开始动手
#define MAX (a,b) (a) > (b) ? (a) : (b)
#defien 这个就不多说了。 MAX宏的名字,刚才说了。 (a,b)宏需要的参数。我们需要两个这里是a和b 然后我们需要对比其中比较大的数。这里用到了三元运算符
(a) > (b) ? (a) : (b)
这样就完成了
宏呢本身就是一段语句 或者函数。所以这样是可以的
刚才大白我在想一个问题 为啥 (a) > (b) ? (a) : (b) 要这样写 而不是 a > b ? a : b 呢? ()这东西有什么用处呢?
然后经过研究 恍然大悟 扫噶 原来里面暗藏玄机啊
()呢 是为了确定优先级而添加的。同时也是避免一些意外的情况发生的
为什么这么说呢? 好。我们来看下面的例子
#define TEMP_FUN(a) (a) * (a)
这个能看懂把。就是求a*a的结果
如果在调用的时候这样
int number = 5;
TEMP_FUN(5); 这样没有问题运行的结果是 5 * 5 没错 但是我们如果传入一个表达式呢?比如这样
int number1 = 3;
int number2 = 5;
TEMP_FUN( number1 + number5 ); 这样的话结果会是什么呢? 是 3+5 = 8 然后 8 * 8 没错。是的。
但是如果我们把宏的写法该改成这样呢?
#define TEMP_FUN(a) a * a
那么答案和上次的一样么? 不一样了。为什么呢? 因为编译器会这样理解 3 + 5 * 3 + 5 ; 饿。是不是貌似知道了什么?
没错。如果知道了什么那就说明已经知道()的意思了。嘿嘿 ()就是用来规定你所要执行的优先级的 说白了 ( 3 + 5 ) * ( 3 + 5 ) 这个明白了把?不明白的我也没辙了
好今天宏的一些问题先到这。没有宏的详细解释。也没有其他的深层面的知识,只是理解一下 宏语句怎么写 以及()的意思
还没完,都说了今天收到鄙视。肯定不是这一个就把我鄙视掉的。比赛还三局两胜呢。这刚败一次 还有一次是什么呢?
int number1 = 3;
int number2 = 5;
int num = number1 * number2++;
就是这道题。你说num的结果是什么呢? 好吧当时其实是知道的。结果心虚了,不敢说结果,还是不够熟悉 不够自信啊。好吧那就研究一下 彻底弄明白了。
这个问题也是在考 优先级的问题。 前两句我不解释了。看不懂的话,你们在去学学程序的入门语法 变量的声明和初始化把。
int num = number1 * number2++;这个语句的执行结果是什么?执行顺序又是什么呢?
结果是.....15. 也就是 number1 * number2 的结果。
那如果这样写呢
int num = number * ++number2;
结果是...... 18。 是不是有点迷糊?
那先看下http://www.cnblogs.com/chenglei/archive/2009/08/03/1537822.html 这个 C++ 的优先级表 可能会有点帮助
好啦 夜也深了 00:30了 大白我也要睡觉了,明天还要上班呢。
感觉第二个知识点讲的有点太笼统了。唉 也不知道怎么说,可能你们都知道把。就我不知道,还不怎么去讲。T_T.
大家如果看到这个文章的话 欢迎各种喷 各种指点。 第一次写文章那里些的不好的地方或者理解不对的地方希望大家多多指出。我会注意的。
我喜欢程序所以做程序。能写程序能研究学习程序,是我的快乐和幸福。
为了我自己喜欢的东西。加油!努力!