c - if 语句中的 sizeof() 运算符

标签 c sizeof

#include <stdio.h>
int main(void)
{
    if (sizeof(int) > -1)
        printf("True");
    else
        printf("False");
}

它打印False。为什么 sizeof() 在 if 中不返回值?

最佳答案

  1. sizeof 不是一个函数,它是一个运算符。括号不是运营商名称的一部分。
  2. 失败是因为生成的值具有无符号类型 size_t,这导致“通常的算术转换”,其中 -1 被转换为无符号,在这种情况下它是一个非常大的数字。

基本上你是在比较 4 > 0xffffffffu,或者至少是接近它的东西。 See this question了解详情。

关于c - if 语句中的 sizeof() 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17293749/

相关文章:

c - 二进制搜索树插入抛出段错误

c - 我的程序在调用 `strcpy()' 时崩溃

c - 避免 C 中的样板语法 sizeof(x)/sizeof(x[0])

c - 什么是 sizeof() 检查作为 C 中 int array[] 的标记值

c - ip_output.c 中的 hlen 和 sizeof(struct ip)

与系统调用混淆

java - 返回在各种语言的函数中创建的数组和对象

c - Open MPI 的矩阵乘法错误

c - 获取数组的长度

c - 什么是 VLA 类型的表达式?