复制表达式x=5本身是有值的,这个值等于左值。也就是说x=5这个式子的值是x,也就是5。而x=5这个式子的值是5不为零,就是真的,还会执行k=2。
一般来说,if后面语句是禁止使用单等于号,也就是赋值号的,就是为了防止出错。
980515024 这位回答的有错误。if(x=5)编译是不会报错的。
如果是x=0,这个表达式的值就是0,也就是假的,就不执行后面的语句了。用什么软件编译无所谓,6.0还是dev还是vs08都行。
赋值语句永远是真,所以要执行
优秀的程序员就需要养成好的习惯,最好判断语句写成if(5==x),即使误输入少了一个“=”,即if(5=x),这样编译时会报错,若写成if(x==5),误输入为if(x=5),程序将继续,大程序查错就困难
对于if语句既然你知道里面的判断语句是表达式,那么当你要在该语句中为变量赋值时就应该知道赋值的规则啊!赋值和相等时不一样的!如你所问:if(x=5)这是错误的,编译器是不会认同这样的表达式,因此认为是假,不执行k=2,下面的一样!
个人感觉这里的“=”是赋值符号,将等于号后面的值赋给了x这样if必然成立,随后由于if的条件成立这样很正常的就会输出K的值了,个人观点
赋值运算返回左值
x=5 返回5 true
x=0 返回0 false