问答详情
源自:2-7 算法——交换

不理解赋值与被赋值的关系?

为啥我写反了就不行:string boy="秀丽";  //男孩的名字 string girl="伟强";  //女孩的名字 string temp;    //中间的变量boy=temp;  //把男孩的名字赋值给temp girl=boy;//把女孩的名字赋值给男孩temp=girl;//把temp中的名字赋值给男孩console.writeline("男孩叫"+boy+"女孩叫"+girl);(我的解释:先把boy给了temp,然后boy就空了,再把girl给boy,然后girl就空了,最后把temp给grill, 这就结束了。 为什么就是报错。  理应的说右边不是赋值吗? 就等于上图的牛奶,AB(等于这里中间的变量)C, A放入B,A杯就空了,然后C杯就放入A,C就空了,然后再把B放入C。) 然后我题就是这样做的,就是错的。求解释

提问者:慕粉1953301150 2017-06-17 13:04

个回答

  • qq_小陈_11
    2017-06-17 15:31:13
    已采纳

    赋值语句中等号的左边是被赋值的变量,等号右边是赋值变量,即右向左传,例如:把boy值赋给temp当写成temp=boy;

  • 一念征途
    2017-06-17 21:43:30

    你好,首先说一点,赋值= 是把等号右边的值,赋值给等号左边的变量,如果你问我为什么是把右边的值赋值给左边,而不是把左边的值赋值给右边?我只能告诉你,这是一个大家约定好的规则,就像 “红灯停,绿灯行”,而不是“红灯行,绿灯停”;同时在c#,c,java等编程语言中,也是这样规定的。

    再一点,如果把a的值赋值给b,a的值是不改变的,你可以暂时先把“赋值”当成“复制”。下面看个小例子:

                string a1 = "one";
                string a2 = "two";
                Console.WriteLine("a1的值为:" + a1 + "  a2的值为: " + a2);
                //现在把a1的值 赋值给a2, 这样a2 的值 就会变化了
                a2 = a1;
                //再次 输出,看下a1,a2的值是否变化
                Console.WriteLine("a1的值为:" + a1 + "  a2的值为: " + a2);

    运行结果为:http://img.mukewang.com/5945303c00019bad02930105.jpg,会发现,a2的值变了,a1的值没有变,也没有为空。

    最后说下,2个值交换值得写法,你的主要思路是对的,主要是对赋值还没有完全掌握而已。把之前代码中赋值语句两边调换一下就可以了。http://img.mukewang.com/594531c90001128104040226.jpg如果还有不懂得地方,可以继续回复我。如果觉得回答还不错的话,麻烦采纳一下哈!