gpt4 book ai didi

c - C 中的逻辑运算符与实际逻辑运算有何不同?

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

<分区>

我有以下代码片段,根据我对逻辑运算符工作原理的了解,我对输出感到有些困惑。据我所知(基于电子学中的真值表),

  1. 对于逻辑 ANDTRUETRUE 给出 TRUE 的值以及所有其他真值组合表给出 FALSE
  2. 对于逻辑OR,只有FALSEFALSE 给出FALSE 的值。而真值表的所有其他组合给出 TRUE

基于这些知识,第一个代码片段-

void main( )
{
int i = -1, j = 1, k ,l ;
k = i && j ;
l = i || j ;
printf ( "%d %d\n", i, j ) ;
printf("%d %d", k,l);
}

给出输出-

-1 1
1 1

我在这里很困惑,因为根据逻辑与和或的真值表,k的值应该是-1。这是因为 i 的值为 -1(即 FALSE)而 j1(即 TRUE),所以 TRUE AND FALSE 应该等于 FALSE,即-1

但是,由于 k 和 l 的输出都是 1,我认为 C 处理逻辑 ANDOR 基于只有 1 和 0,其中 1 为 TRUE0 为 false。根据此逻辑,任何非零值都将为 TRUE,因此即使 -1 也将为 TRUE

在这种情况下,k=i&&j 将表示 -1&&1。由于 -1 和 1 都为 TRUE,因此表达式 k= i&&j 的计算结果为 TRUE,即 1。遵循相同的逻辑,l=i|| j 的计算结果也为 TRUE

我认为第二种方法是逻辑运算符在 C 中的正确工作方式是否正确?

我的第二个问题是关于下一个代码片段的——

void main( )
{
int j = 4, k ;
k = !5 && j ;
printf ( "\nk = %d", k ) ;
}

产生输出 k=0

这真的让我很困惑,因为我无法弄清楚逻辑 NOT 在逻辑 AND 运算符中是如何工作的。这里的j4,但是k的值是多少,这个和j比较怎么样?我在想既然 k 不是 不是 5,它可能是 -5?但在那种情况下,-54 的计算结果都是 TRUE,所以 k 的值应该是 1

请帮忙。

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