-4 c if-statement
理论上这应该工作得很好,但每次我输入-1001or时-3000,它都会继续运行,就好像它完全满足条件并且数字相加一样。我不知道还能尝试什么。
if((-1000 <= A, A<= 1000) &&(-1000 <= B, B <= 1000)){
Run Code Online (Sandbox Code Playgroud)
这并不像你期望的那样工作。
Run Code Online (Sandbox Code Playgroud)if((-1000 <= A, A<= 1000) &&(-1000 <= B, B <= 1000)){
(-1000 <= A, A<= 1000)计算两个表达式,但作为一个整体,仅计算 的值A<= 1000。和-1000 <= A都可-1000 <= B以为假,如果其他表达式的计算结果为真,则整个表达式将为真。
如果编译器中启用了警告,它应该警告您有关表达式的值-1000 <= A和-1000 <= B未使用的值。
您可能想要:
if ((-1000 <= A && A <= 1000) && (-1000 <= B && B <= 1000)) {
Run Code Online (Sandbox Code Playgroud)
要不就:
if (-1000 <= A && A <= 1000 && -1000 <= B && B <= 1000) {
Run Code Online (Sandbox Code Playgroud)
尽管这是一个观点问题,但我不喜欢必须切换心理齿轮以这种方式比较数字与变量。我宁愿:
if (A >= -1000 && A <= 1000 && B >= -1000 && B <= 1000) {
Run Code Online (Sandbox Code Playgroud)
当然,你也可以编写一个函数来处理这个问题。
int in_range(int val, int start, int end) {
return val >= start && val <= end;
}
Run Code Online (Sandbox Code Playgroud)
进而:
if (in_range(A, -1000, 1000) && in_range(B, -1000, 1000)) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |