Я смотрел на некоторый код RobotC, который очень похож на C (и у меня нет достаточной репутации для создания нового тега RobotC), и я наткнулся на * = operator. Я немного поработал с ним в Google, но все, что я могу сделать, это побитовый оператор в C. Никто, кажется, не говорит точно, что он делает, тем не менее, и я был бы признателен, если вы, ребята, можете помочь.Что именно означает «* =» в программировании на С?
rot *= 5;
Вот код, в котором я его нашел. Вся функция выполняет переориентацию робота, чтобы он всегда смотрел на Север.
//Turns back to North
void TurnStraight(int cdegree) //cdegree is the sensor value read by the compass sensor
{
int rot = cdegree % 360;
int mot = 1;
//stop when the NXT facing North
if (cdegree == 0){
return;
}
//reset the encoders value to avoid overflaow
clear_motor_encoders();
if (cdegree > 180 && cdegree < 360){
rot = 360 - rot;
mot = 0;
}
rot *= 5; // ratio between the circumference of the tire to the circumference of the rotation circle around itself
switch (mot){
case 1:
moveTo(rot/2,1);
break;
case 0:
moveTo(rot/2,-1);
break;
case -1:
moveTo(rot,1);
break;
}
}
void clear_motor_encoders()
{
nMotorEncoder[motorA] = 0;
}
void moveTo(int rot, int direction)
{
nSyncedMotors = synchAC;
nSyncedTurnRatio = -100;
nMotorEncoderTarget[motorA] = rot;
motor[motorA] = direction * 50;
while (nMotorRunState[motorA] != runStateIdle) ;
motor[motorA] = 0;
}
Это не мой код, конечно, я хотел бы просто знать, как это работает.
Это может быть трудно найти в Google для '* =', но операторы «C» легко доставили вас в [Википедия] (http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Compound_assignment_operators) –
Ознакомьтесь с [...] tory C programming "] (http://www.eskimo.com/~scs/cclass/cclass.html), датированный, но очень актуальный.И прежде чем вы начнете спрашивать, почему ваша программа выходит из строя из-за очевидных проблем с указателем, прочитайте и поймите [Ted Jensen's [«Учебник по указателям и массивам в C»] (http://pw1.netcom.com/~tjensen/ptr/pointers. htm) (также довольно устаревший, но существенный). – vonbrand