发现VC有个错误检查不出来

在使用 VC6 编译器进行 C++编程时,遇到一个意外的类型转换问题,导致传入函数的参数值并非预期的guggy,而是空字符串。文章详细阐述了问题的发现过程、原因分析及解决方法,帮助开发者理解隐式类型转换的潜在陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前天改程序过程中发现的,觉得VC6老兄有点坑爹了:)  折腾大半天才发现在哪里晕菜了!

代码我就简化了,其余无关的就省略掉,直击主题吧!


原来代码是这样:

int GetValue(int key)
{
    ......
}

void CTestDlg::OnButton1() 
{
    if (GetValue(25) > 0)
    {
        ...... 
    }
    ......
}

接着想给GetValue多加一个参数,默认值为空字符串,调用的地方随手改了一下,结果变成这样了:

int GetValue(int key, CString name = "")
{
    ......
}

void CTestDlg::OnButton1() 
{
    if (GetValue(25), "guggy" > 0)
    {
        ...... 
    }
    ......
}

顺利编译通过,执行,结果大跌眼镜。上看下看没看出代码有什么问题,单步调试吧。发现有点奇怪,为什么传到GetValue里的name是空,而不是"guggy"呢?
Rebuild all后再试,问题依然!晕了

首先说明是我自己犯晕才出的这个问题,但觉得VC6应该比我清醒,最起码给个警告啊 对吧老兄!

if(GetValue(25), "guggy"  > 0)

这么一句应该算不上有意义的语句吧?!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峻峰飞阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值