C编程新手。为什么下面这段代码的输出不是0 20 0
而是1 20 0
?
printf ( "\n%d %d %d", x != 1, x = 20, x < 30 ) ;
我的理解是代码将x赋给非1的值(1 = true,因此!= true为0)?有人可以指导我理解逻辑吗?
答案 0 :(得分:7)
我不知道为什么对于某些教育系统来说,如此流行以至于选择了更多具有创造性的方法来教授具有未指定行为的不良代码,但由于未指定评估这些参数的顺序,因此程序的行为未定义。 / p>
也就是说,您可能假设代码是从左到右或从右到左“运行”的,但不需要这样做。实际上,anything can happen包括我家人的任何输出或谋杀。所以请不要!