gpt4 book ai didi

c - 为什么int的值会改变?

转载 作者:行者123 更新时间:2023-12-02 05:23:13 24 4
gpt4 key购买 nike

我有这个 C 代码:

int a = 5;
printf("a is of value %d before first if statement. \n", a);
if (a = 0) {
printf("a=0 is true. \n");
}
else{
printf("a=0 is not true. \n");
}
printf("a is of value %d after first if statement. \n", a);
if (a == 0){
printf("a==0 is true. \n");
}
else{
printf("a==0 is not true. \n");
}
return 0;
}

输出:

a is of value 5 before first if statement.
a=0 is not true.
a is of value 0 after first if statement.
a==0 is true.
Program ended with exit code: 0

我不明白为什么 int 值在第一个语句中仍被识别为 5,但在第二个 if 之前变为 0,或者为什么它根本就变了?

最佳答案

当您执行 if (a = 0) 时,您将变量 a 设置为 0。在 C 中,这也会将表达式计算为 0

所以实际上 if 语句分两步工作。就好像你这样做了:

a = 0; //assign 0 to a

if (a) { ... } //evaluate a to check for the condition

在这种情况下,由于 a0,它的计算结果为 false。这就是为什么您在第一部分的 else 中结束,而在第二部分中 (a == 0) 的计算结果为 true!

关于c - 为什么int的值会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51865447/

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