非常基本的,C中的if函数

非常基本的,C中的if函数,c,function,if-statement,C,Function,If Statement,我是一名学生,明天有考试,需要有人向我解释函数中的“a | | b”和“a&&b”到底是什么意思 这里有一个例子来说明我的意思: a=0,b=1,c=0 (a) 解决方案:c=3 (b) 解决方案:c=1 我不明白a | | b和a&&b是什么意思。我把它看成是a或b,a和b,但这到底是什么意思呢?如果a或b在第一个上不是零,如果a和b在第二个上都不是零。是的,这就是它的意思。 “a或b”和“a和b” 因为a是0,b是1,它们的OR结果是1(在第一个if条件中),所以执行语句“c=++b”。 它

我是一名学生,明天有考试,需要有人向我解释函数中的“a | | b”和“a&&b”到底是什么意思

这里有一个例子来说明我的意思:

a=0,b=1,c=0

(a)

解决方案:c=3

(b)

解决方案:c=1


我不明白a | | b和a&&b是什么意思。我把它看成是a或b,a和b,但这到底是什么意思呢?

如果a或b在第一个上不是零,如果a和b在第二个上都不是零。

是的,这就是它的意思。 “a或b”和“a和b”

因为a是0,b是1,它们的OR结果是1(在第一个if条件中),所以执行语句“c=++b”。
它们的AND结果为零,因此您不执行语句“c=++b”

这是两个问题的起始值:
a=0,b=1,c=0

这两个问题的问题都是:“变量c的值是多少?”


让我们看看第一个问题:

if(a||b) // if a or b is true (meaning in this case not 0)
  c=++b; // then increment the value of b (was 1, now 2) and assign the value to c
c++; // increment c's value again (was 2, now 3)
因此,解决方案是3


第二个问题

if(a&&b) // if a is true (shortcutting here, because a is 0, which is false)
  c=++b; // we don't get to this part
c++; // increment c (which was 0, now 1)
解决方案是1)

因为0 | | 1将计算为真,因为它们中的一个在OR比较中为真。所以会有一个预增量b,它的值会被分配给c。因此,c将是2,在它之后,c再次增加,所以它将变成3

(二)


比较将为false,因为a为0,在and比较中为false。所以只有C++;将对行进行求值,并将后增量设置为1。实际上,a | | b表示“a或b”,a&&b表示“a和b”,这是正确的。但这两个问题的真正意义只是测试你对以下方面的知识:

  • C语言中什么是真什么是假
  • 做什么
  • ++前缀和++后缀之间的区别
  • 第一个问题是if的计算结果为真,因为a为假(=0),b为真(=1——事实上,任何非零值都为真),因此a | | b=真。这就是为什么c=3,因为执行了语句c=++b。此外,++b实际上返回2,因为前缀++意味着首先递增,然后将其新值返回到表达式的其余部分(在本例中为c赋值)。然而,postfix++意味着首先将操作数的值返回到表达式,然后再对其进行递增


    另一方面,第二个问题显示的是if的计算结果为false,因为a为false(=0),b为true(=1-实际上任何非零值都为true),因此a&&b=false。这就是为什么C=1,因为语句c+++b没有被执行,并且下面的C++将从0的初始值将C增加到1。< /P>如果你在C中有一个测试,你就有一个大问题,你不知道什么“和”和“或”是“平均”。如果不是函数,请选中
    。你应该解雇你的教授。如果你不知道的话!!在明天的考试中,你的前途是暗淡的,特别是如果包含了指针、链接列表和结构……我建议你好好学习。幸运的是每个人都是以某种方式开始的,对吧?“而且它不像C有一个完美的布尔概念。”manonthemat在考试前一天开始说?拜托…在c语言中,我们没有直接的布尔类型。我们使用整数来实现。1表示true,0表示false。0表示false任何非零表示trueC99引入了\u Bool和stdbool.h的使用,因此我们确实有引入布尔类型的宏…即使它们“减少”为1表示true,0表示false。参见1 | | 0不是1,它是
    true
    嗯,1在C中表示true,0在大多数其他语言中表示false。不,在C中,零值被视为false,非零值被视为true。所以你同样可以说0 | | 1是42(它也不是)。你的措辞让它看起来像0 | | 1和0 | 1一样非常感谢你,我所需要的一切!太好了,如果这解决了问题,请投票并接受这是最好的答案。
    if(a||b) // if a or b is true (meaning in this case not 0)
      c=++b; // then increment the value of b (was 1, now 2) and assign the value to c
    c++; // increment c's value again (was 2, now 3)
    
    if(a&&b) // if a is true (shortcutting here, because a is 0, which is false)
      c=++b; // we don't get to this part
    c++; // increment c (which was 0, now 1)
    
    if(a||b)
      c=++b;
    c++;
    
    if(a&&b)
      c=++b;
    c++;