嗨我试图输出一个数字,只要它是一个有效的整数,并且是0和65535
if (cin >> n && (0 <= n <= 65535))
cout << n;
Dosen似乎没有用。可以输出77777。
答案 0 :(得分:4)
这不是C ++中的条件如何工作。表达式0 <= n <= 65535
将被解析为(0 <= n) <= 65535
。 0 <= n
的结果将是布尔值true
或false
,它将分别转换为1
或0
。这意味着您的表达式将为1 <= 65535
或0 <= 65535
,这将始终为真。
您需要使用逻辑&&
和0 <= n && n <= 65535
进行组合。
答案 1 :(得分:2)
你不能写像0 <= n <= 65535
这样的表达式。你需要说:
0 <= n && 65535 <= n
您输入的内容不起作用的原因是首先评估0 <= n
,然后显示为真。然后将其评估为(true <= 65535)
。 true
转换为1,给予1 <= 65535
,这将永远为真。