我已经使用 libnet 一段时间了,我注意到有一些函数的返回值是uint32_t
,据我了解,它是无符号类型。但是,在文档中,它说如果发生错误(这是有符号类型)返回 -1 libnet_get_ipaddr4
,libnet_get_prand
例如,请参见。
但是,我可以毫无问题地使用这些功能:
if ((src_ip_addr = libnet_get_ipaddr4(l)) == -1) {
/* treat the failure*/
}
我想比较发生在 -1 解释为 unsigned int 与返回值之间,返回值取相同的值;比较是真的。
尽管这显然有效,但我的问题是:这有意义吗?为什么?作为程序员,我应该如何检查返回值以了解是否发生错误?上面显示的代码片段是否正确?