从int转换为char

时间:2019-06-19 19:51:39

标签: c++

我想知道这个演员如何工作:

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,但我不知道如何打印负整数。

1 个答案:

答案 0 :(得分:0)

char的数字范围是-128 .. 12710 + 20 + 100130且不在该范围内,因此当表示为char时它会回绕。

要解决此问题,您需要使用可以包含足够大的值的数据类型:

auto f = [&value] (int x, int y) -> int { return x + y + value; };

或使用值<127。