#include <iostream.h>main()
{
int i = 3;
int j = 5; cout << 10+j%i++ << "\n";
cout << --i*i-2*i+5 << "\n";
cout << (19 + ++i + ++j)/(2*j+2) << "\n";
}
请说出输出是什么。why?

解决方案 »

  1.   

    建议上述各位高手看一下林锐的高质量C++编程指南
    呵呵
    #include <iostream.h>main()
    {
    int i = 3;
    int j = 5;
    int k1, k2; cout << 10+j%i++ << "\n"; //10+5%3=12 然后i=4
    cout << --i*i-2*i+5 << "\n"; //3*3-2*3+5=8
    cout << (19 + ++i + ++j)/(2*j+2) << "\n"; //(19+4+6)/(2*6+2)=29/14=2(取整)
    }
      

  2.   

    考的就一个吧,操作符顺序吧
    你要是高兴的话,看看下面的
    1、
    struct A {
    template <class T> operator T***() {
    int*** p = 0;
    return p;
    }
    };
    请问这个A做的是什么事情
    2、    template<class T>
        struct X {
           virtual void f();
        };    template<class T>
        struct Y {
           void g(X<T> *p) {
      p->template X<T>::f();
           }
        };
    3、还有这个  struct S { int a:3; int b:3; int c:3; };  void f()
      {
        struct S s;
        const int *p = &(s.b = 0);     // (a)
        const int &r = (s.b = 0);      // (b)
              int &r2 = (s.b = 0);     // (c)
      }
    这个好像才是对C++的理解吧,你那个我认为不能叫对C++的理解。还有这种
    19 + ++i + ++j)/(2*j+2) 
    这个标准C++对这个有没有规定啊?
    我好像看到有本书上说C++根本没有对这种用法做出限制,或者说随便编译器怎么处理这个问题,C++好像只会保证下一句中已经这些自加的得到了处理和使用的时候不自加,
    还有到底是从左往右处理还是从右往左处理好像也是没有规定的。不知道我看的有没有过时了。
    还请高手指正。
      

  3.   

    这段代码很简单嘛,我想现在任何的编译器都能通过。
    其实就是让你理解 i++ 和 ++i 的区别。不过,用于教学还可以,现实中写这种代码,如果你在我手下。立即开除!比如这句 "(19 + ++i + ++j)",虽然并不复杂,但是决不是好的代码写法,
    如果,程序充斥这种语句,给维护者理解代码带来很多不必要的麻烦,
    现在不是作坊时代了,需要团队开发,多人协作才行。强烈建议你去看看"程序设计实践"这本好书,机械出版,裘宗燕译。
      

  4.   

    #include <iostream>int main(int argc ,char* argv[])
    {
    int i = 3;
    int j = 5; std::cout << 10+j%i++ << std::endl;
    std::cout << --i*i-2*i+5 << std::endl;
    std::cout << (19 + ++i + ++j)/(2*j+2) << std::endl;
             return 0;
    }
      

  5.   

    同一工程的两个文件:
    A.cpp中
    ...
    extern int y;
    int x = y + 1;
    ...B.cpp中
    ...
    extern int x;
    int y = x + 1;
    ...运行现象及解决办法并给出例程(嘿嘿。。别光说不练,向上面几位)
      

  6.   

    12
    8
    2
    Why?
    You must think of it by yourself!
      

  7.   

    只能说明你属于C++的fans一员,不能说你是C++的真正使用者. 这种题目一般给学生考试的时候可以用用,如果用到自己的程序中是不妥的.建议你不要总是看这个作家,那个作家的编程技巧,还应该多看看软件工程. 很多优秀的程序员写在程序中的注释可能比代码还多,我觉得写程序就是用最简单,最直接,最易懂的代码来完成工作,对人对己都是有好处的.
      

  8.   

    很难说了
    我感觉这样做不正确,比如先运行A.cpp还是b.cpp,其中必定有一个在之前没有被主义,即extern int 找不到声明它的变量,所以,int x=y+1或int y=x+1中的一个一定得分开写:(以前者为例)
    int x;
    然后在一个函数中写:x=y+1
    这样的话,要先行动a.cpp文件,然后再去运行b.cpp文件,最后才能调用写有x=y+1的那个函数
    这样正确吗吗?个人理解
      

  9.   

    sevencat(七猫):Would you please explain No.1 question?struct A {
    template <class T> operator T***() {
    int*** p = 0;
    return p;
    }
    };
    请问这个A做的是什么事情
      

  10.   

    struct S { int a:3; int b:3; int c:3; };
    能够解释一下这个么?
      void f()
      {
        struct S s;
        const int *p = &(s.b = 0);     // (a)
        const int &r = (s.b = 0);      // (b)
              int &r2 = (s.b = 0);     // (c)
      }