c++ 编程小技巧

while(cin>>ch):

在上while循环中ch是一个字符串类型,cin>>ch位判断依据,就是每次循环时都要重新输入,当输入成功时进入循环,反之当输入失败时则不进入循环,所以这种循环一般是循环输入循环,在每次循环中都是对本次输入的数据进行处理。

continue & break:

两者均应用于循环,continue是跳过本次循环进行下一次循环,而break是直接跳出本个循环。

rand()%100:

这个语句是为了产生[0,100)的随机数的效果,通过用100取余来实现可以说很棒了。但是rand()一般是和srand函数结合使用。srand((unsigned)time(NULL)); 以这种方式创建随机种子,让rand每次创建的随机数不一样,相反如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的,从而增加随机性。

(int)(a+0.5):

这个语句是为了简单的实现四舍五入的效果,其中a为小数,又因为强制类型转换是一种截断所以通过+0.5从而实现简单的四舍五入的效果

_kbhit()?_getch()?区别?

kbhit() 在执行时,检测是否有按键按下,有按下返回键值没有按下返回0;是非阻塞函数getch() 在执行时,检测按下什么键,如果不按键该函数不返回;是阻塞函数。

#pragma warning(disable:4996):

warning C4996: '_vsnprintf': This function or variable may be unsafe. ......(比如fopen语句报错)

warning C4996: strcpy was declared deprecated(比如_kbhit报错)

出现这样的警告,是因为VC2005之后的版本中认为CRT中的一组函数如果使用不当,可能会产生诸如记忆体泄露,缓冲区溢位,非法访问等安全问题。这些函数如:strcpy,strcat等。对于这些问题,VC2005建议使用这些函数的更高级的安全版本,即在这些函数名后面加了一个_s的函数。这些安全版本函数使用起来更有效,也便于识别,如:strcpy_s,calloc_s等。当然,如果执行使用老版本,非安全版本函数,可以使用_CRT_SECURE_NO_DEPRECATE标记来忽略这些警告问题。办法是在编译选项C / C ++ | 预处理器| 预处理器定义中,增加_CRT_SECURE_NO_DEPRECATE标记即可。另外一种解决方法:

 #pragma warning(disable:4996)//全部关掉     #pragma warning(once:4996)//只显示一个 (#pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个过程的文件有效,伴随着该文件结束而消失)

enum 在c++使用:

1.enum可以在没有定义变量的情况下直接使用(代码如下)

enum yang{pig,cat,dog};
//可以直接定义枚举变量来使用常量
yang me=cat;
if(me==1){...};
//也可以直接使用tongguo"::"
if(yang::cat);

 

2.为了防止不同的枚举内容重叠,我们可以在使枚举量的作用域为类,即定义 enum class .....

3.我们可以不要枚举名字直接创建枚举,这样就和const创建的常量没有什么不同 

 

return EXIT_FAILURE || return EXIT_SUCCESS

  

 EXIT_FAILUREC语言头文件库中定义的一个符号常量,在vc++6.0下头文件stdlib.h中定义如下: #define EXIT_FAILURE 1 .

 EXIT_FAILURE 可以作为exit()的参数来使用,表示没有成功地执行一个程序。

 EXIT_SUCCESS 作为exit()的参数来使用,表示成功地执行一个程序。

报错函数和退出函数:

  perror()函数包含在stdio.h的报错函数,括号里面写入指定的字符串。当有错误的时候一般后面都会加上exit(1);当里面的参数为1代表着系统的异常退出,如果参数为0则为正常的退出,但是这个正常的退出和return可不一样return是函数的退出(返回);exit是进程的退出!

 

posted @ 2018-05-09 15:16  yskn  阅读(344)  评论(0编辑  收藏  举报