gpt4 book ai didi

c - 了解警告 "comparison of promoted ~unsigned with unsigned"

转载 作者:行者123 更新时间:2023-11-30 16:27:05 31 4
gpt4 key购买 nike

我遇到了一个我不太理解的警告。该警告是通过比较我认为是一个未签名的内容与另一个未签名的内容而生成的。

来源如下:

#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>

int main()
{
uint8_t *arr = malloc(8);
assert(arr);

/* fill arr[] with stuff */

if (arr[3] != (uint8_t)(~arr[2])) { // Warning is here
/* stuff */
}
return EXIT_SUCCESS;
}

我使用以下过程构建:

user@linux:~ $ gcc -o test -Wall -Wextra test.c 
test.c: In function ‘main’:
test.c:13:16: warning: comparison of promoted ~unsigned with unsigned [-Wsign-compare]

我使用的是 gcc 版本 4.7.2 20121109 (Red Hat 4.7.2-8)

如何修正上述比较?

最佳答案

我遇到了同样的问题,我通过使用中间变量解决了这个问题:

uint8_t check = ~arr[2];
if (arr[3] != check)

关于c - 了解警告 "comparison of promoted ~unsigned with unsigned",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52890295/

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