gpt4 book ai didi

c++ - 断言不起作用

转载 作者:行者123 更新时间:2023-11-30 02:25:57 24 4
gpt4 key购买 nike

我的断言根本不起作用。

int tspace::Tpiz::set_pitPoz(int p)
{
assert (0<=p<=11);
pitPoz = p;
}

主要内容:

Tpiz piz;
piz.set_pitPoz(78);
cout << piz.get_pitPoz();

输出是:

78- - - - - - - - - - - - - -Process exited after 0.03378 seconds with return value 0Press any key to continue

还有什么我需要做的吗?

最佳答案

表达式0<=p<=11可能评估0<=p , 这会产生一个 bool , 但随后它试图涉及这个 bool11 进行比较,它是一个整数,所以它提升了 boolint , (0 or 1,) 然后检查这个 0 或 1 是否小于或等于 11。所以,它总是会成功。

您可以通过启用更多警告来避免此类愚蠢的事故,这样编译器会警告您您很可能做错了什么。尝试 -Wall ,或者告诉您的编译器启用所有警告的任何内容。如果没有启用许多(最好是大多数)警告,您就无法尝试编写软件。

关于c++ - 断言不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43439494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com