VC编程-过马路,左右看

小时候,大人们总是教导小孩子“过马路,左右看”。我年纪小不懂得为什么 ,但是由于大人们唠叨得遍数太多,以至于都深深印在脑海里,成为了潜意识。每每过马路 的时候,不由自主得左右看看。长大以后,渐渐的喜欢考虑问题,凡事问个为什么:为什么 是“过马路,左右看”而不是“过马路,右左看”?有朋友告诉我说 那是因为中国话的习惯就是左右、男女、老幼之类的说,就像“决一雌雄”不叫 作“决一公母”一样只是个习惯而已。可是,我觉得习惯是养成的,如果天天说 “过马路,右左看”说多了,反倒这么说比较习惯——这也说不准那 ~ :)

其实,仔细想想,“过马路,左右看”是个很有道理的话。中国的 车辆都是靠右行驶,所以过马路的时候前一半的过程(就是从路始边走到路中间的过程)总 是车辆从我们左边开过来,而后一半的过程(从路中间到路右边的过程)总是车辆从右边开 向左边。

于是,这个俗语就教导我们先看左边再看右边,甚至可以说走前一半的时候可以只看左 边,走后一半的时候可以只看右边。如果把口诀反过来做,就做了无用功;如果没有这个口 诀,没准过马路时头会摇的跟一个波浪鼓似的。(注1)。

中国人做事很讲究总结一 个口诀,内功讲究心法,练刀有刀谱,练剑有剑诀,甚至书圣王曦之还写了个什么书诀(我 忘了多少招了,那个兄弟提示下)。再比如《西游记》中说孙悟空过火焰山的时候把毛都烤 糊了,于是左手捏了个避火诀冲了下去。这说明口诀很有用,本领大如孙大圣都用的上:虽 然你不知道他是怎么来的,但是照着口诀做就没错——老祖宗已经验证过了才总 结成口诀传下来。

其实软件开发的时候也有很多口诀,即便是不明白道理,但是照着 做,总没错。如果不照着做,没准还真就捅了篓子,或者在代码中埋下了一时难以出现的隐 患。下面就举一个C中的应用口诀的例子(C++我不懂,就不献丑拉。~)

比如,有个 口诀叫做“定义宏常量或宏公式的时候,一定要加圆括号”,有很多人就不理解 ,于是他们就不加,结果就出了类似于如下的问题:

#define NUM_A 100
#define NUM_B  25 * 2
#define int_div(a, b) a / b
float c;
c = int_div(NUM_B, NUM_A); //作者原意是 50/100,实际结果是 25 * 2 / 100, 结果没错
c = int_div(NUM_A, NUM_B); //作者原意是 100/50,实际结果是 100 / 25 * 2,结果错 了。
试想,如果我们就按照口诀来操作:
#define NUM_A (100)
#define NUM_B (25 * 2)
#define int_div(a, b) ( (a) / (b) )

又怎么会出错呢? 再举个例子,比如有个口诀叫做“头文件里面只声明不定义”。如果不照这个口 诀操作,也会出问题。比如:

//a.h
int max(int a, int b)
{
  return a>b?a:b;
}
//main.c
#include "a.h"
#include "a.h" //include 两遍后就会重复定义max(),结果出重复定义的错 。
int main()
{
  return 0;
}

时间: 2024-11-08 19:00:45

VC编程-过马路,左右看的相关文章

vc++-VC编程中提取源程序代码应用另一个程序

问题描述 VC编程中提取源程序代码应用另一个程序 请问各位大神,现在我有一段VC二维码识别程序的源代码,如何将其提取并编译成一个新的程序,满足从指定位置访问图片文件,输出识别信息?求指导. 在VC编程环境下实现,谢谢! 解决方案 既然有源代码,那么你要做的就是程序得到输入文件路径,然后传给源码中的函数对应参数,获取函数返回结果,进行处理. 解决方案二: 参考:http://blog.csdn.net/liuyu60305002/article/details/8713399 解决方案三: 有一段

vc++-VC++编程中HICON,这个是图标句柄,想这种带H的都是引用对象的地址的,是吗??

问题描述 VC++编程中HICON,这个是图标句柄,想这种带H的都是引用对象的地址的,是吗?? VC++编程中HICON,这个是图标句柄,想这种带H的**都**是引用对象的地址的,是吗??不会引用其他的吧,句柄只是引用对象的地址吧? 解决方案 局柄的数据结构并没有公开. Windows程序一书中的理解:句柄是一个32位的整数,实际上是windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引.因为windows的内存管理经常会将当前空闲对象的内存释放掉,当需要时访问再重新提交到物理

vc 编程老是出现error

问题描述 vc 编程老是出现error #include ""stdafx.h""#include ""math.h"" int main(int argc char* argv[]){ double abcx1x2mtemp; scanf(""%lf %lf %lf""&a&b&c); m=b*b-4*a*c; x1=(sqrt(m)-b)/(2*a); x2=

vc++-关于vc编程的小问题:怎么启动程序之前弹出列表框让用户选择

问题描述 关于vc编程的小问题:怎么启动程序之前弹出列表框让用户选择 如图,想实现的功能是,在启动程序时先弹出窗口让用户进行选择(列表框),待用户做出选择以后再进入响应的程序界面,请问怎么实现启动时先弹出这样一个列表框,看别人的程序没发现什么关于列表框的资源啊,.. 解决方案 就你贴出的这个界面,是MFC自带的.只要你定义了2种或者以上的DocumentTemplete,自然就会出现这个选择框. 解决方案二: http://dev.yesky.com/398/2341898_2.shtmlhtt

从脚本编程的角度看JSP的安全

JSP作为建立动态网页的技术正在不断升温.JSP和ASP.PHP.工作机制不太一样.一般说来,JSP页面在执行时是编译式,而不是解释式的.首次调用JSP文件其实是执行一个编译为Servlet的过程.当浏览器向服务器请求这一个JSP文件的时候,服务器将检查自上次编译后JSP文件是否有改变,如果没有改变,就直接执行Servlet,而不用再重新编译,这样,效率便得到了明显提高. 今天我将和大家一起从脚本编程的角度看JSP的安全,那些诸如源码暴露类的安全隐患就不在这篇文章讨论范围之内了.写这篇文章的主要

C++/VC++编程的疑难问题及解答

本人在用C++/VC++编程时,遇到的一些比较难以解决的问题,在经过百思得其解之后,总结了一些解决方法,希望这些经验之谈能对大家有所帮助. 1.[VC问题] 编辑框内的换行? 答:假设要在编辑框内输出"12345\n6789".首先要设置编辑框的Multiline属性为TRUE,在输出时,除了要加\n,还要有\r.也就是说,如果要12345和6789在两行显示,需要输出12345\r\n6789.代码如下: m_strData = "12345\r\n67890";

vc-利用VC++编程实现求直线与圆的交点。

问题描述 利用VC++编程实现求直线与圆的交点. 要求:(1) 利用对话框绘制直线,对话框中输入直线两端点的坐标. (2)利用对话框绘制圆,对话框中输入圆的圆心与半径. (3)绘制直线与圆得采用第3章的图形生成算法实现. (4)若直线与圆没有交点,在屏幕上打印"该直线与圆相离". (5)若直线与圆只有一个交点,在屏幕上打印"该直线与圆相切",并以相切点为圆心半径为5绘制红色的圆. (6)若直线与圆有两个交点,在屏幕上打印"该直线与圆相交",并以交

用vc++编程,用GDI绘制一个直径为100毫米的圆,高手指教。

问题描述 用vc++编程,用GDI绘制一个在鼠标点击处为圆心直径为100毫米的圆,高手指教.注意直径单位为毫米 解决方案 解决方案二: 解决方案三:哈哈,你在都大家玩阿.1:100毫米转换像素不?这里面涉及到了坐标系和缩放比.2:最好用GDI+来做这个.3:考虑到你对100毫米这个毫米字样很敏感,直接D2DDirectWrite吧,没有毛边.解决方案四:条件不足啊,在什么设备上绘图?设备分辨率?解决方案五:毫米转换像素,然后画圆.

vc++编程问题-VC加载SkinPlusPlus后CFileDialog的打开对话框重新选取时自动消失

问题描述 VC加载SkinPlusPlus后CFileDialog的打开对话框重新选取时自动消失 在VC编程中,加载了SkinPlusPlus库后,调用InitializeSkin("SoftCrystal.ssk");初始化窗体皮肤,显示一切正常,但是在用CFileDialog Dlg(TRUE)进行DoModal()后,打开对话框出来了,在对路径进行重新选择(比如点击后退按钮!,比如下拉选择C盘或桌面)时,打开对话框就自动消失了,对此本菜鸟很是头疼,搞了好几天都没有弄出来,希望哪位