为什么min()会给出奇怪的结果?

时间:2015-02-03 23:39:04

标签: c++ integer-arithmetic

在Visual Studio 2013中调试程序时,我发现了一些奇怪的东西。在我使用min()的一个表达式中,出现奇怪的值。在VS的立即窗口中,我试试这个:

min(W, H)
35 '#'
W
291
H
682

DUH-什么?对此有何解释?

1 个答案:

答案 0 :(得分:2)

min将其输入视为char s。这就是为什么它显示'#'旁边的字符35,因为ascii值为35是#。您提供的数字超出char的范围,因此它们正在包装。您实际上min(291%256, 682%256) min(35, 170) 35,显然是{{1}}。