断言不起作用
Assert is not working
我的断言根本不起作用。
int tspace::Tpiz::set_pitPoz(int p)
{
assert (0<=p<=11);
pitPoz = p;
}
主要:
Tpiz piz;
piz.set_pitPoz(78);
cout << piz.get_pitPoz();
输出为:
78 - - - - - - - - - - - - - - 进程在 0.03378 秒后退出,返回值为 0 按任意键继续
我还需要做什么吗?
表达式0<=p<=11
可能计算0<=p
,从而产生一个bool
,但随后它试图将这个bool
与整数11
进行比较,因此它将bool
提升为int
,(0 或 1),然后检查这个 0 或 1 是否小于或等于 11。 所以,它总是会成功的。
您可以通过启用更多警告来避免此类愚蠢的事故,以便编译器会警告您您很可能做错了什么。 尝试-Wall
,或任何告诉您的编译器启用所有警告的内容。 您不能在没有启用许多(最好是大多数)警告的情况下尝试编写软件。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- MS 本机单元测试 - 断言::线程失败不起作用
- 断言不起作用
- 为什么断言在这里不起作用
- 断言无符号的 int 确实是积极的不起作用?
- 断言语句在 c++ 中不起作用
- 为什么这个静态断言不起作用
- VS2012:单元测试错误:断言::AreEqual(对象,对象)不起作用