gpt4 book ai didi

c - (~(0)) 将如何在 c 中解释?

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:37 25 4
gpt4 key购买 nike

最近在 CCS 标准库中我看到了这样的东西

函数采用无符号整型参数。

delay(unsigned int)

原来是这样用的

delay(~(0));

现在 (~(0)) 将如何解释?

如果我这样使用

printf("%d",(~(0)));

它是如何处理 signed int 的?无符号整数?长整数?或无符号字符?

它如何依赖于系统? c 规范对此有何规定?

最佳答案

回想一下,~ 是按位非运算符,0 是一个整数,大小为 sizeof(int) 字节。

由于 0 是所有位设置为零,(~0) 是所有位设置为 1。

如果(像大多数系统一样)您的 sizeof(int)==4,则 (~0) == 0xFFFFFFFF

基本上,这是 delay 可能的最大值(假设 delay(unsigned int))


#include <stdio.h>
#include <limits.h>

int main(void)
{
printf("sizeof(0)=%d sizeof(~0)=%d\n", sizeof(0), sizeof(~0));
printf("0x%X\n", (~0));
printf("%d\n", (~0)==UINT_MAX);
return 0;
}

输出:

$ ./a.out
sizeof(0)=4 sizeof(~0)=4
0xFFFFFFFF
1

关于c - (~(0)) 将如何在 c 中解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24379084/

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