gpt4 book ai didi

c - 为什么最后打印1?

转载 作者:行者123 更新时间:2023-11-30 21:33:18 27 4
gpt4 key购买 nike

我不明白为什么它最后打印 1。

#include <stdio.h>
int main(){
printf("%d\n", -2&&2);
return 0;
}

最佳答案

&& 是 bool 运算符,而不是整数运算符。在 C 中,任何非零值在应用于 bool 运算时都被解释为 true,而零是唯一在以下情况下被视为 false 的整数值:应用于 bool 运算。

所以:

(<non-zero> && <non-zero>) == true

相反,当 true 结果被视为整数时(如本例中 %d 格式说明符所指示),true 为用 1 表示,而 false 为零。因此在这种情况下 true 变为 1。

如果你想打印 bool 结果,那么:

printf( "%s\n", (-2 && 2) == 0 ? "false" : "true" ) ;

严格的表达:

-2 && 2

相当于:

(-2 != 0) && (2 != 0)

它具有严格的类型协议(protocol),因为 != 具有来自整数操作数的 bool 结果,因此 && 仅与 bool 操作数一起呈现,没有隐式转换。

关于c - 为什么最后打印1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59233878/

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