gpt4 book ai didi

将 unsigned char 与负数进行比较

转载 作者:太空宇宙 更新时间:2023-11-04 00:24:08 24 4
gpt4 key购买 nike

我想知道 ar[i] != -1 中的第 9 行发生了什么。结果是循环没有停止,但我不确定为什么。

  4 int main()
5 {
6 unsigned char ar[] = {1, 2, 3, 4, 5, -1};
7 int i;
8
9 for (i = 0; ar[i] != -1; i++)
10 {
11 printf("ar: %u\n", ar[i] );
12 }
13 printf("out: %u\n", ar[i] );
14
15 return 0;
16
17 }

谢谢,

最佳答案

unsigned char ar[] = {1, 2, 3, 4, 5, -1};ar[5] 初始化为 (unsigned char )-1,即 255,因为无符号算术通过回绕来工作。

然后你做 ar[5] != -1整数提升 将左侧从 unsigned char 变为 int 而不更改值。这使得比较 255 != -1 为真,因此循环继续。

一个解决方案是针对 (unsigned char)-1 测试循环条件。或者,您可以使用数组维度而不是标记值。

关于将 unsigned char 与负数进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36770376/

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