Esto es una snetencia de asignación:
Que para optimizar el código se usa así:
Pero si te das cuenta, sólo se le asigna un valor a una variable, en este caso a la variable x, esto e slo que tan raro ví (y sigo viendo vamos
)
Donde le asignas a la variable temp el módulo de dividir entre 10 y así mismo se lo asignas a z
, es decir, son varias sentencias de asignación en una sóla instrucción, ¿para que quieres asignarselo a z si ya el resultado lo tienes en temp?
Dices que los módulos por separado (negativo y positivo) te funcionan bien, viendo tú código, para entrar en dichos módulos son mediante instrucciones if que revisan los valores de las variables b y x, y la variable x, tal como lo tienes tú, se actualiza así:
Con esa 'doble asignación' que haces, ¿has probado en depurarlo paso a paso y ver el valor que toma x cuando se ejecuta la instrucción anterior, si es correcto el dato que dá o no?
Yo me reitero, no he visto una doble asignación hasta ahora (todos los días se aprende algo nuevo), aunque tampoco recomendaría mucho su uso, ya que no creo que te haga falta, hazlo como he dicho paso a paso.
Suerte!!!