精华内容
下载资源
问答
  • java之逗号操作符
    千次阅读
    2018-01-16 23:05:23

    接触过C语言的都知道,有逗号表达式。

    X=(5+5,6+6)其实把12赋给X。

    在java里也有,叫逗号操作符

    Java里唯一用到逗号操作符的地方就是for循环的控制表达式。在控制表达式的初始化和步进控制部分,可以使用一系列由逗号分隔的语句,而且那些语句均会独立执行。通过逗号操作符,可以在for语句定义多个变量,但是它们必须是相同的类型。

    public class TestFor {
    	public static void main(String[] args) {
    		for(int i=1,j=i*2;i<5;i++,j=i*3,j=i*4){
    		    System.out.println("i="+i+" "+"j="+j);
    	}
    }
    }
    /*Output:
    i=1 j=2
    i=2 j=8
    i=3 j=12
    i=4 j=16
    *///:~
     for语句中的int定义涵盖了i和j,在初始化部分实际上可以拥有任意数量的具有相同类型的变量定义。在一个控制表达式中,定义多个变量的这种能力只限于for循环适用,在其他任何选择或迭代语句中都不能使用这种方式。
    




    更多相关内容
  • 逗号操作符可以用来在一条语句中执行多个操作,如下所示: 在一条语句中同时声明多个变量是逗号操作符最常用的场景。不过,也可以使用逗号操作符来辅助 赋值。在赋值时使用逗号操作符分隔值,最终会返回表达式...

    逗号操作符可以用来在一条语句中执行多个操作,如下所示:

     

    在一条语句中同时声明多个变量是逗号操作符最常用的场景。不过,也可以使用逗号操作符来辅助

    赋值。在赋值时使用逗号操作符分隔值,最终会返回表达式中最后一个值:

     在这个例子中,num 将被赋值为 2,因为 2 是表达式中最后一项。逗号操作符的这种使用场景并不 多见,但这种行为的确存在。

    二、逗号操作符的拓展用法

    逗号操作符还有很多意想不到的操作,例如可以使我们的代码最大程度的进行简写,如下所示:

    let arr = [{ id: 1, value: '正式' }, { id: 2, value: '非正式' }]

    当我们的需要将arr的值处理成为{1: '正式', 2: '非正式'}的时候

    按照我们正常的写法来说,用reduce方法是最合适不过的。

          let newArr= arr.reduce((acc,item)=>{
               acc[item.id]=item.value
               return  acc
            },{})
            console.log(newArr);
            
        这时我们打印输出newArr得到的值就是 {1: '正式', 2: '非正式'}

    可以看出这样也是可以得到我们想要求的值,但是如何让这些代码一行就能达到效果呢?

    这里我们就可以用到逗号操作符了

      let newArr= arr.reduce((acc,item)=> (acc[item.id]=item.value, acc),{})
      console.log(newArr);
      这里我们输出打印的值也一样可以得到我们需求的值 {1: '正式', 2: '非正式'}

    由此可见逗号操作符可以使我们的代码尽可能的进行压缩

    展开全文
  • 一、逗号操作符的基础用法 逗号操作符可以用来在一条语句中执行多个操作,如下所示: 在一条语句中同时声明多个变量是逗号操作符最常用的场景。不过,也可以使用逗号操作符来辅助 赋值。在赋值时使用逗号操作...

    一、逗号操作符的基础用法

    逗号操作符可以用来在一条语句中执行多个操作,如下所示:

     

    在一条语句中同时声明多个变量是逗号操作符最常用的场景。不过,也可以使用逗号操作符来辅助

    赋值。在赋值时使用逗号操作符分隔值,最终会返回表达式中最后一个值:

     在这个例子中,num 将被赋值为 2,因为 2 是表达式中最后一项。逗号操作符的这种使用场景并不 多见,但这种行为的确存在。

    二、逗号操作符的拓展用法

    逗号操作符还有很多意想不到的操作,例如可以使我们的代码最大程度的进行简写,如下所示:

    let arr = [{ id: 1, value: '正式' }, { id: 2, value: '非正式' }]

    当我们的需要将arr的值处理成为{1: '正式', 2: '非正式'}的时候

    按照我们正常的写法来说,用reduce方法是最合适不过的。

          let newArr= arr.reduce((acc,item)=>{
               acc[item.id]=item.value
               return  acc
            },{})
            console.log(newArr);
            
        这时我们打印输出newArr得到的值就是 {1: '正式', 2: '非正式'}
    

    可以看出这样也是可以得到我们想要求的值,但是如何让这些代码一行就能达到效果呢?

    这里我们就可以用到逗号操作符了

      let newArr= arr.reduce((acc,item)=> (acc[item.id]=item.value, acc),{})
      console.log(newArr);
      这里我们输出打印的值也一样可以得到我们需求的值 {1: '正式', 2: '非正式'}
    

    由此可见逗号操作符可以使我们的代码尽可能的进行压缩

    展开全文
  • 逗号操作符(,)在c\c++中的原生语义: 1)逗号表达式用于将多个子表达式连接为一个表达式 2)逗号表达式的值为最后一个子表达式的值 3)逗号表达式的前N-1个子表达式可以没有返回值 4)逗号表达式按照从左到右...

    逗号操作符(,)在c\c++中的原生语义:

    1)逗号表达式用于将多个子表达式连接为一个表达式

    2)逗号表达式的值为最后一个子表达式的值

    3)逗号表达式的前N-1个子表达式可以没有返回值

    4)逗号表达式按照从左到右的顺序计算每个子表达式的值

    例子:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    void func(int i)
    {
        cout << "func() : i = " << i << endl;
    }
    
    int main()
    {   
        int a[3][3] = {
            (0, 1, 2), //此处没有使用 {} 所以变成了逗号表达式 
            (3, 4, 5),
            (6, 7, 8)
        };
    	   
        int i = 0;
        int j = 0;
        
        while( i < 5 )    
            func(i),  //实际上等价于这样 func(i),i++;
        
        i++;
            
        for(i=0; i<3; i++)
        {
            for(j=0; j<3; j++)
            {
                cout << a[i][j] << endl;
            }
        }
        
        (i, j) = 6; //等价于 j = 6;
        
        cout << "i = " << i << endl;
        cout << "j = " << j << endl;
    
        return 0;
    }

    运行结果

    func() : i = 0
    func() : i = 1
    func() : i = 2
    func() : i = 3
    func() : i = 4
    2
    5
    8
    0
    0
    0
    0
    0
    0
    i = 3
    j = 6

    逗号运算符的重载试验

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Test
    {
    	int m_value;
    public:
        Test (int i)
    	{
    		m_value = i;
    	}	
    	int value()
    	{
    		return m_value;
    	}
    	
    };
    
    Test& operator , (const Test& a , const Test& b)
    {
        //按照逗号运算符的原生语义 返回第二个参数的引用
    	return const_cast<Test&>(b);  //使用const_cast去除b参数的只读属性
    }
    
    
    Test func(Test& i)
    {
        cout << "func() : i = " << i.value() << endl;
    	
    	return i;
    }
    
    int main()
    {   
        Test t0(0);
    	Test t1(1);
    	
    	Test t2 = (t0,t1);//逗号表达式 t2使用t1进行初始化
    	
    	cout << t2.value() << endl;
    	
    	Test t4 = (func(t0),func(t1));
    	cout << t4.value() << endl;
    
        return 0;
    }

    运行结果

    1
    func() : i = 1
    func() : i = 0
    1

    这里我们可以看到,逗号运算符并没有按照从左到右运行,违背了其原生语义

    那到底是什么原因呢?

    其实在上面的代码对t4进行初始化时的代码是

    Test t4 = (func(t0),func(t1)); 

    等效于

    Test t4 = operator , (func(t0),func(t1));

    在c/c++中,进入函数体之前,必须完成所有参数的计算,且参数的计算次序也是不确定。所以出现了这样的运行结果。

     

    最后我们做一个小实验,去除之前代码中的逗号操作符重载,编译执行,得到的结果如下:

    1
    func() : i = 0
    func() : i = 1
    1

    结果正确,且编译器没有报错,说明实际上编译器就能处理包含对象的逗号操作符。重载逗号操作符是没有意义的

    展开全文
  • C++深度解析 逗号操作符 --- 逗号表达式,重载逗号操作符(38)       逗号操作符( , )可以构成逗号表达式 逗号表达式用于将多个子表达式连接为一个表达式。 逗号表达式的值为最后一个子表达式的值。 ...
  • JavaScript-逗号操作符

    千次阅读 2022-03-12 18:42:58
    最近发现 JavaScript 有一个叫做逗号操作符的小东西,感觉很有意思,分享给大家。 功能: 对它的每个操作数求值(从左到右),并返回最后一个操作数的值。 语法: expr1, expr2, expr3... 代码: let a = 1;...
  • 重载逗号操作符 逗号操作符算法:从左到右依次计算每一个表达式的值,整个逗号表达式的值等于最右边表达式的值,前面n-1个表达式可以没有返回值 重载逗号操作符: 参数必须有一个class成员 重载...
  • Java 逗号操作符

    2020-03-20 15:17:43
    逗号操作符(注意不是逗号分隔符),Java中唯一用到逗号操作符的地方就是for循环的控制表达式,在控制表达式的初始化和步进控制部分,可以使用一系列由逗号分隔的语句。 public static void main(String[] args) ...
  • 逗号操作符 逗号操作符(,)可以构成逗号表达式 逗号表达式用于 将多个子表达式连接为一个表达式 逗号表达式的值为 最后一个子表达式的值 逗号表达式中的 前 N-1 个子表达式可以没有返回值 逗号表达式按照 从左向...
  • 逗号操作符

    2018-01-02 23:54:48
    逗号操作符(,)可以构成逗号表达式 - 逗号表达式用于将多个子表达式连接为一个表达式 - 逗号表达式的值为最后一个子表达式的值 - 逗号表达式中的前N-1个子表达式可以没有返回值 - 逗号表达式按照从左向右的...
  • //赋值操作符 操作符 说明 = 简单赋值操作符,如a=b += 加法赋值操作符,如a+=b -= 减法赋值操作符,如a-=b *= 乘法赋值操作符,如a*=b /= 除法赋值操作符,如a/=b %= 取...
  • 在c++逗号操作符可以重载吗,重载逗号操作符有意义吗? 答: 在c++中可以重载逗号操作符,在工程开发中不要重载逗号操作符,那是无意义的 下面我们复习下逗号操作符: 1.逗号操作符(,)可以构成逗号表达式 2....
  • C语言中的逗号操作符

    2021-05-19 18:31:34
    在变量声明语句、函数调用中,逗号是做分隔用的,例如:int a,b,c;scanf("%f%f%f",&f1,&f2,&f3);C语言还允许用逗号连接表达式。例如:x=5.6,y=2.1,10+x,x+y,这里用3个逗号运算符将4个表达式连接成一个...
  • 文章目录1 C++中逗号操作符的重载1.1 逗号操作符的原生语义1.2 重载逗号操作符 1 C++中逗号操作符的重载 1.1 逗号操作符的原生语义 逗号操作符(,)可以构成逗号表达式: 逗号表达式用于将多个子表达式连接为一个...
  • 逗号操作符陷阱

    2013-12-11 16:29:28
     不少C++ newbie都会问到这... 其实,我们是经常会用到逗号操作符的,但是并不是所有代码里出现的逗号都是逗号操作符。  让我们先从一个类的示例代码开始:  class mynum  { public: mynum(double ndb,...)
  • 逗号操作符
  • 逗号操作符的分析

    2021-12-01 23:05:11
    逗号操作符逗号操作符(,)可以构成逗号表达式 逗号表达式用于将多个子表达式连接为一个表达式 逗号表达式的值为最后一个子表达式的值 逗号表达式中的前N-1个子表达式可以没有返回值 逗号表达式按照从左向右的顺序...
  • c++ 逗号操作符重载

    千次阅读 2016-04-05 12:32:10
    Overload Operator Comma 首先看看think in c++ 给出的一个重载的例子 #include using namespace std; class After { public: const After& operator,(const After&) const { cout ,()" ;
  • “C++还为逗号操作符提供了另外两个特性。 首先,它确保先计算第一个表达式,然后计算第二个表达式(换句话说,逗号操作符是一个顺序点)。 其次,C++规定,逗号表达式的值是第二部分的值。” “在所有操作符中,...
  • 从头认识java-2.6 逗号操作符

    千次阅读 2015-10-24 22:28:10
    这一章节我们来聊一下逗号操作符。注意:不是逗号分割符。package com.ray.ch03; public class Test { public static void main(String[] args) { for (int i = 0, j = 0; i ; i++, j += 2) { System.out....
  • 逗号操作符与逗号表达式 逗号操作符 逗号操作符是一个二元操作符,其标准使用形式如下: 表达式1,表达式二; 其计算顺序是从左到右的顺序先计算表达式1,在计算表达式二。 例如: a += 2; c*4; //用逗号操作符组合...
  • 文章目录1 原生的逗号操作符2 重载逗号操作符 1 原生的逗号操作符 逗号表达式用于将多个子表达式连接为一个表达式 逗号表达式的值为最后一个子表达式的值 逗号表达式中的前 N-1 个子表达式可以没有返回值 逗号...
  • 逗号表达式 又称为“顺序求值运算符”。逗号表达式的一般形式为 (表达式1,表达式2,表达式3……表达式n) 求解过程是:先求解表达式1,再求解表达式2,…。整个逗号表达式的值是最后一个表达式n的值。 例如这里的...
  • 今天来学习C++中的逗号操作符。那么什么是逗号操作符呢? *逗号操作符(,)可以构成逗号表达式 逗号表达式用于将多个子表达式连接为一个表达式 逗号表达式的值为最后一个子表达式的值 逗号表达式的前N-1个表达式...
  • 逗号操作符 概述:逗号操作符对它的每个操作数求值(从左到右),并返回最后一个操作数的值。当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是:for 循环中提供...
  • 逗号操作符对它的每个操作对象求值(从左至右),然后返回最后一个操作对象的值。 var 语句中的逗号不是逗号操作符,因为它不是存在于一个表达式中。 下面的代码,只有最后一个表达式被返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 195,510
精华内容 78,204
关键字:

逗号操作符