为什么n*n在循环的第一个瞬间得到4?对我来说它应该是1*1.相反,它来自2*2

Don*_*aka 6 c++ pointers cout

为什么"n*n"在循环的第一个瞬间变为4?对我来说它应该是1*1.相反,它来自2*2.

请给我一个简单的答案,因为我还是初学者:)

#include <iostream>
using namespace std;
int main(){

    int n =1 , *p;
    p = &n;

    char aString[] = {"student"};

    for (int i = 0; i<5; i++)

        cout<< "i = "<< i << "n*n = "<<n*n<< "n++ = "<< n++<< " *p "<<endl; 

    system ("pause");
    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/nWugmm

小智 6

除了一些非常特殊的情况,例如&&和||之外,表达式中元素的评估顺序是未指定的 等等

写作:

cout<< "i = "<< i << "n*n = "<<n*n<< "n++ = "<< n++<< " *p "<<endl;
Run Code Online (Sandbox Code Playgroud)

你假设一个订单,特别是n ++是最后评估的.

要解决此问题,您可以将演绎分为两部分:

cout<< "i = "<< i << "n*n = "<<n*n<< "n++ = "<< n<< " *p "<<endl;
n++;
Run Code Online (Sandbox Code Playgroud)