2015-09-03 31 views
0
#include <stdio.h> 
int main(){ 
    int b = 10,a; 
     if (a = 5){ 
     printf("%d",b); 
     } 
    } 

在上述程序中,即使我将变量“a”的数据类型从“int”更改为“char”,if语句总是返回true。在c语句中,“=”而不是“==”是什么意思?

= if在if语句中意味着什么?

+4

平常一样,分配。 – EOF

+1

这是实际的代码还是测试的一部分?因为在任何其他情况下,这意味着有一个错字 –

+0

测试 – user3542577

回答

3

=是C.一个assignment operator根据C99 6.5.16:

赋值运算符存储由 左操作数指定的对象的值。 赋值表达式在赋值后具有左边的 操作数的值,但不是左值。

这意味着表达a = 5将返回5并且因此指示内部if块将被执行。相反,如果用a = 0代替它,则0将通过赋值表达式返回,if内的指令将不会执行。

1

单个=将分配值5到a。如果赋值为真(即不为0,空等),赋值将评估为真。如果它评估为真,该函数将分支到if语句块。并有a获得值5的副作用。

+0

作业不总是评估真实,例如'如果(a = 0)'不会分支。 – dreamlax

+0

但我将数据类型更改为“char”?将分配条件是真的在这种情况下也因为在这种情况下I M分配整数的字符类型变量 – user3542577

+0

一个= 65个产量“A”并返回true; A = 0产生“\ 0”并返回false –

1
  • 赋值运算符返回指定的值。
  • “if” 语句决定为true,如果检测值大于零

所以其他:

  • “如果(A = 0)” 返回false
  • “如果(A = X )其中x!= 0“返回true

因此,您应该在其他朋友告诉的if语句中使用”==“运算符。

2

单个=表示赋值运算符,表示您正在更改值a并在if语句中使用此值。

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

是相同的:

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

的==意味着逻辑等价的操作,女巫将返回1,如果这两个值是相同的或0,如果它们是不一样的。

0

请注意,在C中允许使用布尔表达式来使用赋值运算符。正因为如此,因为赋值必须是与comparisson不同的符号。

因为在诸如BASIC语言不能有任何的程序员装置是否分配或comparisson混乱,BASIC使用相同的符号用于两个含义:

C:

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

基本:

a = 5     ' assignment 
If (a = 5) Then   ' comparison