C++调试时发现bool形参数变为int形的85471236这样的数

TerryZhao1086 2008-04-10 11:03:17
我在调试C++程序时发现函数中bool形参数变为int形的85471236这样的数。
我测试了一下发现VC中是把bool形的true给解释为unsigned char 1的,
而把false解释为unsigned char 0的。我不清楚我的程序是怎么回事?
...全文
115 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
TerryZhao1086 2008-04-10
  • 打赏
  • 举报
回复
akirya,我估计这个应该是和编译器有关吧。你的编译器
应该不是VC6吧
TerryZhao1086 2008-04-10
  • 打赏
  • 举报
回复
我在想是不是bool形的参数在传入函数以前就被修改了。
我在代码中找找看看有没有修改的操作
  • 打赏
  • 举报
回复
至于VC6我就不测试了.有错误正常
  • 打赏
  • 举报
回复
输出a的值
显示的是 bl true
TerryZhao1086 2008-04-10
  • 打赏
  • 举报
回复
2楼,你看一下这个小程序。在VC++6.0中调试一下,设置断点。看看堆栈好像就是我说的情况。
#include <iostream>
using namespace std;
void booltest(int a,bool bl)
{
if(a>0&&bl==true)//设断点
cout<<a<<endl;
}
void main(void)
{
booltest(10,true);//设断点
getchar();
}
taodm 2008-04-10
  • 打赏
  • 举报
回复
VC6吧。升级到VC2005express再讨论吧。
ouyh12345 2008-04-10
  • 打赏
  • 举报
回复
true的具体值跟编译器有关
一般0为false,非0为true,不一定得是1
  • 打赏
  • 举报
回复
不会吧,我这里调试看到的bool类型的都是true或者false
Treazy 2008-04-10
  • 打赏
  • 举报
回复
那得看你传进去的是什么了
  • 打赏
  • 举报
回复
当然是VC9
过去的我 2008-04-10
  • 打赏
  • 举报
回复
堆栈 booltest(int 0x0000000a, unsigned char 0x01)
没有发现特殊情况
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-10 11:03
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下