随笔 - 34,  文章 - 63,  评论 - 0,  阅读 - 4070

单算移关与,异或逻条赋

括号级别最高,逗号级别最低,单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。

&属于的是逻辑运算

==属于的是关系运算

=才是赋值运算

 

题目:

给定两个整数 XX 和 YY,输出在他们之间(不包括 XX 和 YY)的所有奇数的和。

输入格式

第一行输入 XX,第二行输入 YY。

输出格式

输出一个整数,表示所有满足条件的奇数的和。

数据范围

100X,Y100

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner se=new Scanner(System.in);
        int a=se.nextInt(),b=se.nextInt();
        if(a>b){
            int x=a;
            a=b;
            b=x;
        }
        long sum=0;
        for(int i=a+1;i<b;i++)
            if((Math.abs(i)&1)==1)sum+=i;
        System.out.println(sum);
         
    }
}

 如果不加括号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner se=new Scanner(System.in);
        int a=se.nextInt(),b=se.nextInt();
        if(a>b){
            int x=a;
            a=b;
            b=x;
        }
        long sum=0;
        for(int i=a+1;i<b;i++)
            if(Math.abs(i)&1==1)sum+=i;
        System.out.println(sum);
         
    }
}

  会报错:

Main.java:14: error: bad operand types for binary operator '&'
            if(Math.abs(i)&1==1)sum+=i;
                          ^
  first type:  int
  second type: boolean
1 error
1
Math.abs(i)&1==1因为会先进行1==1,逻辑运算返回的boolen,然而&要求的是两边必须是int类型,然而java为了安全,boolen和int类型,彼此之间按不会存在隐式转换<br>而c++存在隐式转换
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<cstdio>
#include<string>
 
using namespace std;
 
int main()
{
    int x=3;
    if(3&3==1) cout<<111<<endl;
     
     
     
    return 0;
}

  

posted on   浅唱\,,笑竹神易  阅读(108)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示