C++ 如何重复打印相同的值?

C++ 如何重复打印相同的值?,c++,c,arduino,C++,C,Arduino,我可以在屏幕上显示t,但每次循环迭代时,t的当前值都会在打印前添加到上一个值上。这意味着,它打印出9,18,27,36。。。我如何避免这种情况?只要代码循环,我就需要它连续显示9 int d,i,p,s,t,arr[30]; float hp = 0; float arr2[30]; void setup(){ Serial.begin(9600); } void loop(){ for (d = 0; d < 360; d++){ if (sin(d*(P

我可以在屏幕上显示t,但每次循环迭代时,t的当前值都会在打印前添加到上一个值上。这意味着,它打印出9,18,27,36。。。我如何避免这种情况?只要代码循环,我就需要它连续显示9

int d,i,p,s,t,arr[30];
float hp = 0;
float arr2[30];
void setup(){
  Serial.begin(9600);
}
void loop(){
    for (d = 0; d < 360; d++){
          if (sin(d*(PI/180))+1 + sin(d*(2*PI/180))+1> sin((d-1)*(PI/180))+1 
+ sin((d-1)*(2*PI/180))+1 && sin(d*(PI/180))+1 + sin(d*(2*PI/180))+1 > 
sin((d+1)*(PI/180))+1 + sin((d+1)*(2*PI/180))+1){
         arr2[i++] = sin(d*(PI/180))+1 + sin(d*(2*PI/180))+1;
        }
      }
for (p = 0;p <30; p++){
  if(arr2[p]!=0){
    if (arr2[p]>hp){
    hp = arr2[p];  
    }  
  } 
}
for (d = 0; d < 3600; d++){
      if (sin(d*(PI/180))+1 + sin(d*(2*PI/180))+1 >= hp){
         arr[s++] = d;
        }
      }
 for (s = 0; s < 30; s++){
  if (arr[s]!=0){
    t++;
   }
  } 
  Serial.println(t);
}
intd,i,p,s,t,arr[30];
浮动hp=0;
浮动arr2[30];
无效设置(){
Serial.begin(9600);
}
void循环(){
对于(d=0;d<360;d++){
如果(sin(d*(PI/180))+1+sin(d*(2*PI/180))+1>sin((d-1)*(PI/180))+1
+sin((d-1)*(2*PI/180))+1和sin(d*(PI/180))+1+sin(d*(2*PI/180))+1>
sin((d+1)*(PI/180))+1+sin((d+1)*(2*PI/180))+1){
arr2[i++]=sin(d*(PI/180))+1+sin(d*(2*PI/180))+1;
}
}
对于(p=0;p hp){
hp=arr2[p];
}  
} 
}
对于(d=0;d<3600;d++){
如果(sin(d*(PI/180))+1+sin(d*(2*PI/180))+1>=hp){
arr[s++]=d;
}
}
对于(s=0;s<30;s++){
如果(arr[s]!=0){
t++;
}
} 
序列号println(t);
}
一般建议:

定义范围尽可能小的变量。在您的情况下,除非有理由使
t
d
成为全局变量,否则不要使它们成为全局变量。使它们成为局部变量的函数

将代码更改为:

void loop(){
   int t = 0;
   int d = 0;

   ...

   Serial.println(t);
}

这将解决您眼前的问题,更重要的是,您的代码将更干净。

正确格式化代码将极大地提高可读性…如果要计算
arr
中每次不等于0的值,然后只需在计数循环之前将
t
设置为0。我将处理正确的格式。谢谢。这就解决了问题。我会记住你的建议。