gpt4 book ai didi

c - 有符号到无符号的转换

转载 作者:行者123 更新时间:2023-11-30 17:22:59 25 4
gpt4 key购买 nike

Possible Duplicate:
A riddle (in C)

查看这段代码

  #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0])) 

int array[] = {23,34,12,17,204,99,16};

int main()

{

int d;

for(d=-1;d <= TOTAL_ELEMENTS-2;d++)
printf("%d\n",array[d+1]);

return 0;

}

现在这个循环不会运行。sizeof() 将返回一个无符号值,因此 TOTAL_ELEMENTS 具有无符号值。现在,进入 for 循环,请告诉我一元运算符“-”是否适用于有符号 int 2,或者隐式转换为无符号,然后“-”运算符起作用。

最佳答案

在您的示例中,d 在比较中被转换为无符号整数。但-1不能表示为unsigned int值,因此它被转换为UINT_MAX。为了避免这种行为,您可以通过在前面添加 (int) 将比较的右侧转换为带符号的 int

参见Understand integer conversion rules有关 C 中整数转换的详细信息。

关于c - 有符号到无符号的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27793137/

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