有效输入和范围内

时间:2016-10-21 11:15:19

标签: c++

嗨我试图输出一个数字,只要它是一个有效的整数,并且是0和65535

if (cin >> n && (0 <= n <= 65535))
    cout << n;

Dosen似乎没有用。可以输出77777。

2 个答案:

答案 0 :(得分:4)

这不是C ++中的条件如何工作。表达式0 <= n <= 65535将被解析为(0 <= n) <= 655350 <= n的结果将是布尔值truefalse,它将分别转换为10。这意味着您的表达式将为1 <= 655350 <= 65535,这将始终为真。

您需要使用逻辑&&0 <= n && n <= 65535进行组合。

答案 1 :(得分:2)

你不能写像0 <= n <= 65535这样的表达式。你需要说:

0 <= n && 65535 <= n

您输入的内容不起作用的原因是首先评估0 <= n,然后显示为真。然后将其评估为(true <= 65535)true转换为1,给予1 <= 65535,这将永远为真。