//将编号解析成数组的索引
 void IdConvert(int Id,int &i,int &j,int &k)
{
   i=Id/10000-1;
   j=(Id-(Id+1)*10000)/100-1;
   k=Id-(i+1)*10000+(j+1)*100)-1;
   
 }void Function()
{
   int i=0;
   int j=0;
   int k=0;
  
   int Id=010101;
  
   try
   {
      IdConvert(Id,i,j,k);
      //////////////////////////在这里设置断点。执行完函数后,
      //谁知道i的值是几????
   
     
      
       int Index=0;
       int i=3;    }
   catch(...)
   {
       MessageBox("报错");
     }
   
 }
第2个问题
为什么在try{}中声明一个i变量,没有提示 变量已经重复定义了呢?

解决方案 »

  1.   

    i的值是-1,不过是try外面定义的那个。因为try里面的i和外面的i位于不同的代码区域,所以不存在重复定义。
      

  2.   

    不对那你觉得应该是多少呢??想知道i的值可以printf出来看看不就知道了。
      

  3.   

    简单一点 全部的代码
    #include <iostream.h>void Func(int &a,int &b)
    {
    int temp=a;
    a=b;
    b=temp;
    }
    void main()
    {
    int i,j,k;
    i=10;
    j=20;
    k=30; try
    {
       Func(i,j);
       ////////////////
       cout<<i<<endl;
       int i=50;
       int j=60;
    }
    catch(...)
    {
             cout<<"异常"<<endl;
    }}