#include <stdio.h>
int main(){
int b = 10,a;
if (a = 5){
printf("%d",b);
}
}
在上述程序中,即使我将变量“a”的数据类型从“int”更改为“char”,if语句总是返回true。在c语句中,“=”而不是“==”是什么意思?
= if在if语句中意味着什么?
#include <stdio.h>
int main(){
int b = 10,a;
if (a = 5){
printf("%d",b);
}
}
在上述程序中,即使我将变量“a”的数据类型从“int”更改为“char”,if语句总是返回true。在c语句中,“=”而不是“==”是什么意思?
= if在if语句中意味着什么?
=
是C.一个assignment operator
根据C99 6.5.16:
赋值运算符存储由 左操作数指定的对象的值。 赋值表达式在赋值后具有左边的 操作数的值,但不是左值。
这意味着表达a = 5
将返回5
并且因此指示内部if
块将被执行。相反,如果用a = 0
代替它,则0
将通过赋值表达式返回,if
内的指令将不会执行。
单个=
将分配值5到a
。如果赋值为真(即不为0,空等),赋值将评估为真。如果它评估为真,该函数将分支到if
语句块。并有a
获得值5的副作用。
作业不总是评估真实,例如'如果(a = 0)'不会分支。 – dreamlax
但我将数据类型更改为“char”?将分配条件是真的在这种情况下也因为在这种情况下I M分配整数的字符类型变量 – user3542577
一个= 65个产量“A”并返回true; A = 0产生“\ 0”并返回false –
所以其他:
因此,您应该在其他朋友告诉的if语句中使用”==“运算符。
单个=表示赋值运算符,表示您正在更改值a并在if语句中使用此值。
if(a = 5) {
// some code
}
是相同的:
a = 5;
if(a) {
// some code
}
的==意味着逻辑等价的操作,女巫将返回1,如果这两个值是相同的或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
平常一样,分配。 – EOF
这是实际的代码还是测试的一部分?因为在任何其他情况下,这意味着有一个错字 –
测试 – user3542577