使用8位无符号整数变量作为计数器循环超过256个值

use*_*250 5 c loops

所以我只是想用连续数字0-255来填充缓冲区.我对此并没有多想,最终陷入无限循环.

uint8_t i;
uint8_t txbuf[256];

for (i=0; i<256; i++) {
    txbuf[i] = i;
}
Run Code Online (Sandbox Code Playgroud)

问题是i永远不会是256,因为它在255之后翻了个零.

我的问题是,有没有办法在没有碰到i16位值的情况下执行此循环?

注意:我知道我可以将循环更改i<255为最后一个位置添加另一行,但我试图找出一个更好看的方式.

zav*_*avg 10

uint8_t txbuf[256];
uint8_t i = 0;

do {
   txbuf[i] = i;  
} while (i++ != 255);
Run Code Online (Sandbox Code Playgroud)

要么

uint8_t txbuf[256];
uint8_t i = 255; 

do {
   txbuf[i] = i;  
} while (i--);
Run Code Online (Sandbox Code Playgroud)

  • @ user3817250 zavg的答案是在17:14:02,而Sam的答案是在12月5日17:15:15.如果你根据时间选择答案,看起来像zavg击败Sam 1分13秒. (2认同)

Squ*_*rel 5

使用do ... while循环以便在检查条件之前执行操作:

uint8_t i = 0;
uint8_t txbuf[256];

do {
    txtbuf[i] = i;
} while(i++ < 255);
Run Code Online (Sandbox Code Playgroud)