如果i
必须是一个unsigned char
,那么在不进入无限循环的情况下执行与此类似的东西的优雅方式是什么?
for (unsigned char i = 0; i < 256; ++i) { printf("%dn", i); }
unsigned char i = 0; do { printf("%un",i); }while(++i != 0);
在循环测试中进行增量并针对包装值进行测试。
作为一般经验法则:如果你的迭代器变量需要保存0到“Uxxx_MAX”之间的所有值,那么你选择了一个太窄的算法类型。
您应该考虑使用uint16_t
。
在很多情况下,您不能使用大型int类型而不是unsigned char。 那么让我问你,你的应用程序是一个为8位MCU编写的实时嵌入式系统,你发现这个循环是一个性能瓶颈吗?
将检查放在身体之后和增量之前
for (unsigned char i = 0; ; ++i) { printf("%dn", i); if(i==255) break; }
但是你可能会做一段时间:
unsigned char i = 0; while( ) { printf("%dn", i); if(i==255) break; ++i; }
或者甚至推动检查:
for (unsigned char i = 0; i++ < 255; ) { printf("%dn", i); }
所有这些都在增量之前检查255,而不是之后检查零,所以如果变量是CHAR或某个宏当前限制为256但可以更改,这些仍然可以工作,因为它们不依赖于溢出。 在那里替换int
,它仍然有效。
需要了解更多c/c++开发分享循环使用unsigned char,也可以关注C/ C++技术分享栏目---计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享循环使用unsigned char相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/978842.html