| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1814 人关注过本帖
标题:"{0},{1},{2}"怎么理解
取消只看楼主 加入收藏
hero2007
Rank: 1
来 自:湖北武汉
等 级:新手上路
威 望:1
帖 子:130
专家分:0
注 册:2007-3-22
收藏
 问题点数:0 回复次数:2 
"{0},{1},{2}"怎么理解
using System;

namespace ConsoleApplication1
{
    class Class1
    {
        [STAThread]
        
        static void addout(int m,int n,int j)
        {
            Console.WriteLine("{0},{1},{2}",m,n,j);
            Console.ReadLine();
        }
        static void Main(string[] args)
        
        {   
            int i=0;
            addout(i++,i++,i++);
        }
    }
}


"{0},{1},{2}"怎么理解,对应args数组的args(0),args(1),args(2)么?
上面程序在C++中输出的是:0,0,0

C++程序:
#include "iostream.h"

void addout(int m,int n,int j)
{
cout<<m<<","<<n<<','<<j<<endl;
}

void main()
{
int i=0;
addout(i++,i++,i++);
}


而C#输出的是0,1,2
原因是因为C++中的是一次输出,而C#中是依次输出?
或者是因为C++中参数传递是整体一起传的,而C#中是按逗号运算符的顺序依次传递的?

[[italic] 本帖最后由 hero2007 于 2007-12-20 00:59 编辑 [/italic]]
搜索更多相关主题的帖子: include 
2007-12-20 00:49
hero2007
Rank: 1
来 自:湖北武汉
等 级:新手上路
威 望:1
帖 子:130
专家分:0
注 册:2007-3-22
收藏
得分:0 
"{0},{1},{2}"我现在明白了,我现在想知道的是主函数中三个实参是怎么传递到addout()函数的?下面是我的分析(有错的话,请指教):


从C++的程序可以看出来:
    主函数中的三个实参可能是一起传递到子函数的三个形参的,并没有遵守逗号运算符从左到右的顺序。而且C++中是同时输出的(即使用三条输出语句输出)。
    或者是i++只是视为一个实参同时传递给3个形参的,别没有三个一起传递或者分别传递,并且是同时输出。

理由:
    因为i++是先用后加,如果某一个i++先加的话,结果就不会是0,0,0


        如果C#的参数传递也同上,那么从C#的程序可以看出Console.WriteLine("{0},{1},{2}",m,n,j);其实是分三步输出的。


总结:
    如果三个参数是一起传递的,那么数据总线的位数似乎不够。解释为三个"  i++  ”是视为一个实参同时传递给三个形参才说的过去。
2007-12-20 13:14
hero2007
Rank: 1
来 自:湖北武汉
等 级:新手上路
威 望:1
帖 子:130
专家分:0
注 册:2007-3-22
收藏
得分:0 
看了,我要学习还有很多呢,呵呵
2007-12-31 02:11
快速回复:"{0},{1},{2}"怎么理解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059053 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved