在选择结构中 if (条件1)中,条件一般是一个判断语句,判断语句会返回真假,但如果条件语句不是判断语句(无管什么原因造成),条件如何判断真假?
实现上在C语言中,几乎所有的语句都会有返回值,比如说赋值,如果将原本 if (a == 1) 这样的判断语句误写成了 if (a = 1),会造成怎样的结果呢?
a == 1,返回的结果是将a与1进行对比,如果相等返回1,否则返回0;
a = 1,返回的结果是1,确切的说是返回a的值,可能有些人不能理解为什么会这样,或者干脆直接记住,其实不需要,因为我们早就已经在很多地方用过这种特性了,比如说result = a = 1;如果a = 1 的返回值不为a的值,连续赋值将无法进行,这就是关键,不需要记住,重点在于理解!
同理,如果a == 0,写成了 a = 0,那么返回的结果就直接是假了,误认为当前条件不成立,本来a等于0为真的,结果a被赋值为0,结果没影响,但判断却截然相反。