| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1814 人关注过本帖
标题:"{0},{1},{2}"怎么理解
只看楼主 加入收藏
hero2007
Rank: 1
来 自:湖北武汉
等 级:新手上路
威 望:1
帖 子:130
专家分:0
注 册:2007-3-22
收藏
 问题点数:0 回复次数:8 
"{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
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
收藏
得分:0 
没什么好神奇的
你把输出改成Console.WriteLine("{2},{1},{0}",m,n,j);
或者全部写Console.WriteLine("{0},{0},{0}",m,n,j);
比较一下输出结果 就明白了

愛生活 && 愛編程
2007-12-20 02:41
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
顶楼上

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-12-20 03:46
士居海
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-12-19
收藏
得分:0 

{}这就是一个宏(c和c++的概念),在生成MSIL时,由后面的输出项替代。
至于0,1,2,.....对应输出项号码。
简单的说,在编译时在输出语句“{x}”中的{x}由“”,后对应的输出项替换。

我成功是因为我有决心,从不踌躇
2007-12-20 11:17
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
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 
多试试

我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-12-20 14:13
xf12839356
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-11-6
收藏
得分:0 
顶楼主```
2007-12-21 11:21
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
[url]http://bbs.[/url]
看我的回复。

专心编程………
飞燕算法初级群:3996098
我的Blog
2007-12-30 04:59
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.035221 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved