现在的位置: 首页 > 综合 > 正文

到处是陷阱的C++

2013年09月10日 ⁄ 综合 ⁄ 共 353字 ⁄ 字号 评论关闭

昨天编的程序,使用了strcmp这个函数,怎样都得不到想要的结果.单步执行,发觉问题出现在strcmp函数这里.

用if(strcmp(a,b))来执行条件,老是不对.

 

一开始以为是strcmp函数的问题,换了一个strncmp,结果也是这样.

 

于是我把strcmp()函数提了出来,赋值给bool,查看它的返回,这才发现了原因.

 

又是因为C#使用习惯以后的一个理所当然.在C#里面,返回是true跟false,不允许之外的值.而C/C++,可以接受0为false,1为真.

 

而这两个比较函数,都是strcmp(s1,s2),当它们相等时候返回0,s1>s2时返回>0,当s1<s2时候返回<0;

 

其实放到几年前,我用C编程时候,应该就不会那么迟钝才反应过来bug在哪里.

 

以后要尽量记录,避免再犯这种错误.

抱歉!评论已关闭.