关于域运算符的小问题:::::

时间:2022-05-22 17:38:35
这个问题非常easy。。。but我和答案对不上,,所以找个高手问问。。。。、
#include<iostream.h>
int hour,minute;
void IncTime(int hour,int minute)
{
   minute++;
   if (minute>=60)
     {
        minute =0;
         hour++;
        if (hour>=24)
          hour=0;
      }
      ::hour=hour;
      ::minute=minute;
}
  void main()

    int hour =4;
    int minute=59;
    IncTime(4,3);
    hour=::hour;
    minute=::minute;
    cout<<"the time is "<<hour<<":"<<minute<<endl;
}
答案市什么呀。。。。。为什么。。。

谢了 。。。。

8 个解决方案

#1


hour=4,minute=0

#2


the time is 4:00

#3


the time is 4:4 main函数中前面对hour, minute定义,在后面这两个变量又被重新赋值了

#4


the time is 4:4

#5


4:4
因为::是读全局的hour 和 minute.

#6


the time is 4:4
原因很简单,只要记住在变量前加::运算符表示这个变量用的是全局声明的那一个。如:你的代码在开始就有hour,minute的全局声明,但在main和inctime中又都用到了这两个同名的变量,为了编译器区分你所用的变量,可以在变量名前加::,以示这是全局的那一个。当4和3传给inctime后,由于没能满足if的条件,所以if的内嵌语句都没有执行。然后将这两个局部变量的值给了与他们同名的两个全局变量。完了以后回到main在把这两个全局变量的给与他同名的两个局部变量。最后输出这两个局部变量的数值!

#7


4:4,因为::访问的是全局的hour和minute,显然全局的hour和minute只有在函数中被修改,其它地方并没有影响它们

#8


看到各位大侠我就知道了。。。是答案错了。。。。着本烂书。。。气死我了。。。。各位买书要小心了。。。。。。。

#1


hour=4,minute=0

#2


the time is 4:00

#3


the time is 4:4 main函数中前面对hour, minute定义,在后面这两个变量又被重新赋值了

#4


the time is 4:4

#5


4:4
因为::是读全局的hour 和 minute.

#6


the time is 4:4
原因很简单,只要记住在变量前加::运算符表示这个变量用的是全局声明的那一个。如:你的代码在开始就有hour,minute的全局声明,但在main和inctime中又都用到了这两个同名的变量,为了编译器区分你所用的变量,可以在变量名前加::,以示这是全局的那一个。当4和3传给inctime后,由于没能满足if的条件,所以if的内嵌语句都没有执行。然后将这两个局部变量的值给了与他们同名的两个全局变量。完了以后回到main在把这两个全局变量的给与他同名的两个局部变量。最后输出这两个局部变量的数值!

#7


4:4,因为::访问的是全局的hour和minute,显然全局的hour和minute只有在函数中被修改,其它地方并没有影响它们

#8


看到各位大侠我就知道了。。。是答案错了。。。。着本烂书。。。气死我了。。。。各位买书要小心了。。。。。。。