我想知道这个演员如何工作:
int value = 100;
auto f = [&value] (int x, int y) -> char { return x + y + value; };
printf("%d\n", f(10, 20));
value = 200;
printf("%d\n", f(10, 20));
return 0;
它打印-126和-30,但我不知道如何打印负整数。
答案 0 :(得分:0)
char
的数字范围是-128
.. 127
。 10 + 20 + 100
是130
且不在该范围内,因此当表示为char
时它会回绕。
要解决此问题,您需要使用可以包含足够大的值的数据类型:
auto f = [&value] (int x, int y) -> int { return x + y + value; };
或使用值<127。