
1、用if(!strcmp(s1, s2)) 比较两个字符串等值,是否是个好风格?
这并不是个很好的风格, 虽然这是个流行的习惯用法。如果两个字符串相等
这个测试返回为真, 但! (“非”) 的使用, 容易引起误会, 以为测试不等值情况
另一个选择是用一个宏
#define Streq(s1, s2) (strcmp((s1), (s2)) == 0)
2、为什么有的人用if (0 == x) 而不是if (x == 0)?
这是用来防护一个通常错误的小技巧
if (x = 0
如果你养成了把常量放在== 前面的习惯, 当你意外的把代码写成了
if (0 = x
那编译器就会报怨。明显的, 一些人会觉得记住反换测试比记住输入双= 号容易。当然这个技巧只对和常量比较的情况有用。
3、*p++ 自增p 还是p 所指向的变量?
后缀++ 和-- 操作符本质上比前缀一目操作的优先级高,即++与p结合优先级高于*与p的结合优先级, 因此*p++ 和*(p++) 等价, 它自增p 并返回p 自增之前所指向的值(也即先去内容,然后指针p才自加)。要自增p 指向的值, 使用(*p)++, 如果副作用的顺序无关紧要也可以使用++*p。

C++小技巧:
一 多文件编译时的头文件重复问题:
此时最好的解决方法就是使用条件包含,利用
ifndef-define-include-endif 的结构进行定义
#ifndef _HFILE
#define _HFILE
#include <.....>
....
#include <......>
***Some Essential Defination***
#endif
二 关于命名空间的使
定义命名空间:
namespace space {
Datas ;
Statements ;
}
使用命名空间中的内容:
name::function , name::data ;
当命名空间的嵌套过于繁杂时可以使用
namespace MEF = myth::elements::fire ; 进行精简处理
在实际的编程中可以使用每个主要的类使用一个命名空间,这样在编程时使得每个函数与数据的所属十分清晰。
那么,你还知道有哪些小技巧呢?可以在下方评论出来哦!
另外如果你想成为一名优秀的、高薪的程序员,那就千万不要错过学c/c++,关于C/C++编程学习,小编给大家提供一个学习交流群,欢迎到访C/C++学习--先5692;后68376,要是你对C语言、C++或者是算法方面有兴趣的话,不管你是大牛还是小白,大家都一起成长进步。

网友评论