2017-06-04 41 views
1

我想讓我的arduino告訴我什麼時候運行它是E.g. 「這是這個循環第22次運行。」我應該使用什麼命令? 我目前使用此代碼:如何讓我的arduino打印「循環正在運行.......時間」?

Serial.print("This loop has run "); 
Serial.print(loopsRun); 
Serial.println(" times."); 
loopsRun++; 

是的,我已經聲明的所有變量,我只是想知道如果有任何檢查INT的最後一位數字的方式。

+0

請提供[最小,完整,可驗證的示例](https://stackoverflow.com/help/mcve) – FortyTwo

+0

您是否正在尋找剩餘除以10?看看%運算符。 無論如何,後綴st,nt,...不適用於消息。它應該是「循環爲......時間運行」。 –

+0

@MichelBillaud我同意,我會在代碼審查工作中勸阻這類錯誤信息,但我認爲「nd」等後綴是OP問題的關鍵,因此我的答案如下。 – TomServo

回答

1

22%10 = 2你想說22'nd」 1022%10 = 2你想說1022 'ND'

27%10 = 7你想說7 '日' 457 %10 = 7你會說457'th'

我的模式是否正確?如果是這樣,那麼你需要一個switch語句和運算符%

unsigned int remainder = loopsRun % 10; 
switch (remainder) 
{ 
    case 0: suffix = "th"; break; 
    case 1: suffix = "st"; break; 
    case 2: suffix = "nd"; break; 
    <etc> 

} 
+1

原諒挑選:C/C++%運算符不是模運算符,而是截斷除法後的餘數。在C++ 11之前,負商數(如-5/2)的商數舍入是_implementation defined_可以返回-2或-3,因此其餘的可以是-1或1. 現在標準聲明「The商被截斷爲零「,因此-5%2 == -1,這不同於模數的數學定義。請參閱http://en.cppreference.com/w/cpp/language/operator_arithmetic。 loopsRun變量不能爲負值,它應該是無符號的。 –

相關問題