gpt4 book ai didi

c++ - 断言 unsigned int a indeed positive 不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:36 25 4
gpt4 key购买 nike

我想将两个数相乘,并且我知道我的数总是正数,那么:

unsigned int mulPositiveNumbers(unsigned int a ,unsigned int b)
{
assert(a > 0);
assert(b > 0);
return (a*b);
}

现在,我正在使用断言告诉自己“给定的数字总是正数”。

但是当我运行时:

int main()
{

unsigned int res = mulPositiveNumbers(-4,3);

// more stuff goes here

}

即使我使用的是负数,代码也不会失败。为什么 ?

最佳答案

因为 ab 是无符号的,所以它们永远不会是负数。断言失败的唯一方法是其中之一为 0。

当您使用带符号的 int 作为参数调用您的函数时,它将在函数执行之前(因此在您的断言被检查之前)简单地转换为无符号的 it。将负整数转换为无符号整数将产生一个正整数,因为正如我所说,没有负无符号整数。

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

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