定义数字的最佳方式是c++中的无符号字符



我有一些代码,简化后基本上就是这个

unsigned char a=255;
unsigned char b=0;
while (a+1==b) {//do something}

现在,由于255+1=0带有无符号字符,我本希望它能做点什么,但它没有,因为它将所有内容都提升为int。我可以通过用(unsigned char)(a+1)(a+1)%256替换a+1来实现它。

告诉编译器我不希望更改类型的最佳方式是什么?还是我应该只做我知道有效的方法之一?

根据这个cppreference.com页面,"算术运算符不接受小于int的类型作为参数"也就是说,您提出的(unsigned char)(a + 1)解决方案足以阻止此升级,并且a将回滚到0。使用模运算符更明确,但它在机器代码中引入了一个额外的操作。这是清晰度和性能之间的平衡。

最新更新