C语言 解释输出,为什么“a”不更新为1?[副本]

ezykj2lf  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(123)

此问题已在此处有答案

Why does sizeof(x++) not increment x?(10个答案)
14天前关闭
考虑:

#include <stdio.h>

int main()
{
    int x, a = 0;
    x = sizeof(a++) ? printf("Geeks for Geeks\n") : 0;
    printf("Value of x:%d\n", x);
    printf("Value of a:%d", a);
    return 0;
}

这是密码
我希望输出结果是:
x值:16
a的值:1
但GCC编译器的输出是:
x值:16
a的值:0

bvjxkvbb

bvjxkvbb1#

这是因为sizeof实际上是一个运算符。这意味着在运行时不计算操作数。你可以找到一个更好的解释here
sizeof是一个编译时操作符,它接受变量的类型。这意味着它不会评估传递给它的内容。

相关问题