无符号字符,为什么输出为254预期为255

时间:2018-11-09 17:24:07

标签: c

#include<stdio.h> // header file
int main()
{
unsigned char a=255;
unsigned char b=0;
unsigned char c;
c=a++ + --b; // a++ is 0 and --b is 255;
printf("result=%d\n",c);
return 0;
}

输出: result = 254

混淆为什么输出不是255,如何为254?

请让我知道我是否错过了什么?

1 个答案:

答案 0 :(得分:4)

auto str = "HelloWorld"s; int i = 0; for_each(str.cbegin(), str.cend(), [&i](char const & c) { if (i++ % 2 == 0) cout << c; }); 是一个后缀运算符,这意味着将在使用Hlool后对其求值。如果您尝试a++,将获得期望的结果。

如果您分解了a,则可以有效地获得此信息:

++a