什么是&引用;而不是";==&引用;在c-if语句中是什么意思? #包括 int main(){ int b=10,a; 如果(a=5){ printf(“%d”,b); } }

什么是&引用;而不是";==&引用;在c-if语句中是什么意思? #包括 int main(){ int b=10,a; 如果(a=5){ printf(“%d”,b); } },c,if-statement,C,If Statement,在上面的程序中,即使我将变量“a”的数据类型从“int”更改为“char”,if语句始终返回true if语句中的=是什么意思???单个=将值5分配给a。如果赋值值的值为真(即非0、空等),赋值将为真。如果计算结果为true,则函数将分支到If语句块。还有一个副作用是a得到值5。 赋值运算符返回赋值 如果检查值不是零,“if”语句决定为true 因此: “if(a=0)”返回false “如果(a=x),其中x!=0”返回true 因此,您应该像其他朋友所说的那样,在if语句中使用“==”

在上面的程序中,即使我将变量“a”的数据类型从“int”更改为“char”,if语句始终返回true


if语句中的=是什么意思???

单个
=
将值5分配给
a
。如果赋值值的值为真(即非0、空等),赋值将为真。如果计算结果为true,则函数将分支到
If
语句块。还有一个副作用是
a
得到值5。

  • 赋值运算符返回赋值
  • 如果检查值不是零,“if”语句决定为true
因此:

  • “if(a=0)”返回false
  • “如果(a=x),其中x!=0”返回true

因此,您应该像其他朋友所说的那样,在if语句中使用“==”运算符。

=
是C中的
赋值运算符。根据C99 6.5.16:

赋值运算符将值存储在由 左操作数赋值表达式的值为左 赋值后的操作数,但不是左值。


这意味着表达式
a=5
将返回
5
,因此将执行
if
块中的指令。相反,如果将其替换为
a=0
,则赋值表达式将返回
0
,而
if
中的指令将不会执行

single=表示赋值运算符,这意味着您正在更改A的值,并在if语句中使用该值

#include <stdio.h>
int main(){
   int b = 10,a;
      if (a = 5){
         printf("%d",b);
      }
   }
与以下各项相同:

if(a = 5) {
// some code
}

==表示逻辑等价的操作,如果两个值相同,则返回1;如果两个值不相同,则返回0。

请注意,在C中,布尔表达式中允许使用赋值运算符。因此,=as赋值必须与=for Comparison的符号不同

因为在诸如BASIC之类的语言中,程序员的意思是赋值还是比较不会混淆,BASIC使用相同的符号表示两种含义:

C:

基本:

if ((a=5)==5) ...        // a is set to 5 and then compared to 5

和往常一样,赋值。这是实际代码还是测试的一部分?因为在任何其他情况下,这意味着有一个输入错误。你知道谷歌的意思吗?如果(a=0)
不会分支,那么赋值不会总是计算为true。但是我将数据类型更改为“char”是什么呢??在这种情况下,赋值条件也是真的吗?因为在这种情况下,我将整数赋值给字符类型variablea=65产生“a”并返回真;a=0产生'\0'并返回false@user3542577字体那里有什么类型并不重要。若赋值结果为非零,它将分支。@dreamlax:我更改了“always aveluates true”以处理您的有效注释
a=5
计算结果为真,但
a=0
确实计算结果为假。
if ((a=5)==5) ...        // a is set to 5 and then compared to 5
a = 5                    ' assignment
If (a = 5) Then          ' comparison