C++:写注释也能影响代码的运行结果??????I was shocked!

欢迎关注我的微信公众号:MatlabGUI QtCPP等学习记录

最近在复习 C++ Primer,做第10章的练习10.9时碰见一个诡异的小问题,也算是一个比较难踩的坑吧,这里记录一下。

先简单介绍下这个题目,以及解法:

这个题目就是要给一个 std::vector 中的元素去重。首先调用标准库中的sort算法 按照字典来排序。然后调用标准库中的 unique 算法去除相邻重复的元素,但是算法并不会修改容器,所以最后还得调用容器本身的erase方法来删除尾部那些多余的内容。

函数的输入是:

std::vector<std::string> vec{"123", "Mitch", "Hong", "Mitch", "Hong", "123", "Mitch", "256", "123", "Mitch"};
/// 我把这个vec传递给了上面这个函数

上图所示,这和我们预期的效果并不一样,我们预期输出的结果应该如下:

123     256     Hong    Mitch

但是,这个函数写的是没错的,因为书上就是这么写的 。唯一和书上不一样的地方就是我加了注释。

难道问题出在注释上面?

难道代码的注释对程序的运行结果也有影响?

仔细观察好像是这么回事。我的sort那块上卖弄没写注释,执行函数之后的结果就是对我输入的 std::vector变量 按字典进行排序了!然而后面的uniqueerase上面都加了注释,根据运行结果来看,整个过程貌似就压根没有执行uniqueerase操作!

哎,行吧,应该真的有影响!但是我就是想要这个注释怎么办?在这行注释后面再加上 // 两个斜杠就行了。。。。

如下:


后来又发现修改了一下文件的编码也能解决,,,,,

上面,文件的编码是UTF-8,需要在注释后面加上 //才能解决问题!

下面,我把文件的编码改成了 GBK,不加那个 // 也行

。。。。。。。。乱七八糟的。。。。。。。

反正有这一回,我是长记性了,以后一行的注释后面都加两个斜杠!

还好我这只是做个小练习出了这么个BUG,要是在写一个大一点的项目,那踏马找这种BUG还不得找死了


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值