小编Shu*_*dol的帖子

C 程序输出复杂性

你能解释一下为什么下面的程序会给出这样的输出吗?

#include<stdio.h>

int main()
{
    int i=-3,j=1,k=0;
    int m;
    m=++i || ++j && ++k;
    printf("i= %d\nj=%d\nk=%d\nm=%d", i,j,k,m);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

i= -2
j=1
k=0
m=1

c

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

用C++编写的std :: erase

我对std::eraseC++的功能感到困惑.

下面的代码在std::erase调用之前和之后获得相同的输出.但是如果在执行std::erase输出之后遍历列表,则不显示擦除的值.帮助我理解std::erase.

#include<bits/stdc++.h>
using namespace std;

int main()
{
    list<int> v;
    v.push_back(12);
    v.push_back(10);
    v.push_back(20);

    list<int>::iterator it;
    it = v.begin();
    printf("%u %d\n", it, *it);
    v.erase(it);
    printf("%u %d\n", it, *it);

    for(it= v.begin(); it!= v.end(); it++)
        cout<< *it<<" ";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

"Memory address" 12  
"Memory Address" 12  
10 20
Run Code Online (Sandbox Code Playgroud)

c++ stl list erase

-1
推荐指数
1
解决办法
134
查看次数

如何解决流动代码中的逻辑错误?

如果条件块内部没有打印任何值。逻辑错误在哪里?谢谢。

#include<bits/stdc++.h>
using namespace std;

int fx[]= {-1,-1,-1,0,1,1,1,0};
int fy[]= {-1,0,1,1,1,0,-1,-1};

int ar[20][20];
int n;
int v1, v2;

void fun(int a, int b)
{
    for(int i=0; i<8; i++)
    {
        v1 = a+fx[i];
        v2 = b+fy[i];
        //cout<<v1<<" "<<v2<<endl;
        if(v1>=0 && v1<n)
        {
            if(v2>=0 && v2<n)
            {
               // Not executing 
               cout<<"----------"<<endl;
               cout<<v1<<" "<<v2<<endl;
            }
        }

    }
}

int main()
{
    int n;
    cin>> n;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            cin>> ar[i][j];
    }
    fun(0,1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

样本输入:
4 …

c++

-2
推荐指数
1
解决办法
73
查看次数

标签 统计

c++ ×2

c ×1

erase ×1

list ×1

stl ×1