相关疑难解决方法(0)

201
推荐指数
6
解决办法
6万
查看次数

是printf的输出("%d%d",c ++,c); 也未定义?

我最近发现了一篇帖子cout << c ++ << c ;?的正确答案是什么?并且想知道是否输出

int c = 0;  
printf ("%d %d", c++, c);  
Run Code Online (Sandbox Code Playgroud)

还未定义?

我已经在讲座中研究了修复后和前缀运算符只有在得到分号后才增加值.所以据我说,输出0 0是正确的!

c undefined-behavior

20
推荐指数
2
解决办法
5222
查看次数

这个输出的原因是什么?

我有以下代码.

    int x=80;
    int &y=x;
    x++;
    cout<<x<<" "<<--y;
Run Code Online (Sandbox Code Playgroud)

输出结果是80 80.我不明白怎么做.我认为x的输出是81,尽管我对y一无所知.参数变量如何受减量运算符的影响.有人可以解释一下吗?

c++

14
推荐指数
2
解决办法
361
查看次数

在operator <<中执行的顺序

我很难理解下面代码中的调用顺序.我期待看到下面的输出

    A1B2
Run Code Online (Sandbox Code Playgroud)

虽然我可以看到我得到的输出是

    BA12
Run Code Online (Sandbox Code Playgroud)

我认为这个电话std::cout<< b->fooA() << b->fooB() << std::endl相当于电话

  std::cout.operator<<( b->fooA() ).operator<< ( b->fooB() )
Run Code Online (Sandbox Code Playgroud)

但我可以看到情况并非如此.你能帮助我更好地理解它是如何运作的以及与全球的关系operator<<吗?这是最后一次调用这个序列吗?

问候

AFAG

#include <iostream>

struct cbase{
    int fooA(){
        std::cout<<"A";
        return 1;
    }
    int fooB(){
        std::cout <<"B";
        return 2;
    }
};

void printcbase(cbase* b ){
    std::cout << b->fooA() << b->fooB() << std::endl;
}

int main(){
    cbase b;
    printcbase( &b );
}
Run Code Online (Sandbox Code Playgroud)

c++ cout stream ostream operator-keyword

11
推荐指数
3
解决办法
2252
查看次数

在c ++中引用变量的更改

#include <iostream>
using namespace std;

int main()
{
    int x=80;
    int &y=x;
    cout<<"x"<<x<<" "<<"y"<<y++; 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我以下输出:

81 80
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下x变化的价值如何81yis 的值80然后会增加到81,但它是如何反映的x

它是否反映因为y是参考变量?然后该值应该在两个已被修改xy

c++ pointers memory-address

11
推荐指数
1
解决办法
159
查看次数

使用指针的c ++奇怪的std :: cout行为

可能重复:
cout << c ++ << c ;?的正确答案是什么?

当我突然注意到时,我只是输出了文字.

#include <iostream>
int main()
{    
 int array[] = {1,2,3,4};                 
 int *p = array;

    std::cout << *p << "___" << *(p++) << "\n";
    // output is  1__1. Strange, but I used  brackets! it should be at
    // first incremented, not clear.
    p = array;


   std::cout << *p << "___" << *(++p) << "\n";
   // output is 2_2   fine, why first number was affected? I didn't intend 
   // to increment it, but it …
Run Code Online (Sandbox Code Playgroud)

c++ iostream cout

4
推荐指数
1
解决办法
357
查看次数

写入全局变量的顺序

在下面的程序中,我调用一个函数foo()来设置一个全局变量i ,然后调用构造函数class A,其中i也应该设置,但是10.但是我的程序输出是3 0,你能解释一下吗?

#include <iostream>

int i;

class A
{
    public:
        ~A()
        {
            i=10;
        }
};

int foo()
{
    i = 3;
    A ob;
    return i;
}

int main()
{

    std::cout << "i = " << foo() << " " << i << "\n";
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor global-variables

4
推荐指数
1
解决办法
75
查看次数

预增量和后增量

我无法理解Post Increment(++),Pre Increment(--)和加/减在一个例子中是如何协同工作的.

x++ 意味着将1添加到变量中.

x-- 意味着从变量中减去1.

但我对这个例子感到困惑:

int x = 2, y = 3, z = 1;`

y++ + z-- + x++;
Run Code Online (Sandbox Code Playgroud)

我认为这意味着3(+1) + 1(-1) + 2(+1)这意味着结果应该是7.

但是当我编译它时,我得到了6.我不明白.

int main() {
  int x=2, y=3, z=1;
  int result;

  result = y++ + z-- + x++;    //this returns 6

  cout << result << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ operators pre-increment post-increment

2
推荐指数
3
解决办法
1万
查看次数

在readed之前更改标识符的后缀?

我真的不知道后缀.我知道它首先使用标识符然后增加或减少,如第一次显示i然后++.但现在我认为我错了,仍然不明白.

#include <iostream>

using namespace std;

int main()
{
    int i = 0;
    cout << i << i++ << i;
    cout << "\n\n\nPress Enter to close the window . . . ";
    cin.clear();
    cin.sync();
    cin.get();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

101


Press Enter to close the window . . . 
Run Code Online (Sandbox Code Playgroud)

首先i在增量加入之前改变.为什么?

我期望

001

Press Enter to close the window . . .
Run Code Online (Sandbox Code Playgroud)

有人可以解释.

c++

0
推荐指数
1
解决办法
80
查看次数