小编Fil*_*efp的帖子

新手变量传递

我真的很感激你是否可以快速解决我遇到的这个小问题.到目前为止,在编程中,我已经完成了一些C,但我对如何通过Python中的函数传递变量感到困惑.

我确信这个问题已被多次询问,但我不知道该搜索什么.

我的代码是:

x=0
def getinput(x):
    x = input('Enter x: ')
def addtwo(x):
    x = x + 2
def printans(x):
    print 'x is', + x

getinput(x)
addtwo(x)
printans(x)
Run Code Online (Sandbox Code Playgroud)

printans总是打印出来0.我确定这是因为函数内部的变量是本地的,但我不知道如何在python中修复它.

谢谢您的帮助!

python python-2.7

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

加载特定的32/64bit dll参考项目问题

我一直在寻找,但似乎我的问题与大多数人有所不同.

这是交易,我想使我的程序兼容32和64位.由于用.NET编写它不是问题,但我使用的是一个特定于位的sqlite dll.

尽管如此,我有两个版本的dll,并且我能够编译64位的主程序,通过重新添加64位版本引用到项目,我想让它工作不知何故.

必须编译2次对我来说效率不够,相反,我想找到一种方法使其动态可调:鉴于Dlls是相同的,它们的内容:函数方法无论如何,都是相同的,唯一的区别是他们,是位版本.因此,我想使我的程序的兼容性取决于它旁边的dll.

由于通常它在项目中作为参考添加,Visual studio通过突出显示检测其内容,我想以某种方式将其添加为参考,但是使实际的dll(位于exe旁边)加载,而不会失去到目前为止,使用dll函数,在编辑器中,高亮度.

我已经阅读了Assembly.Load/LoadFrom/LoadFile,+ Reflection,但它并不是我需要的.

提前致谢,

大卫

c# dll 64-bit 32-bit

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

值初始化

$ 8.5/7表示

- 如果T是一个(可能是cv限定的)非联合类类型而没有用户提供的构造函数,那么该对象是零初始化的,如果T的隐式声明的默认构造函数是非平凡的,则调用该构造函数.

我无法理解这句话的最后一部分"如果T隐式声明的默认构造函数是非平凡的,那么构造函数就被调用了."

有人可以用一个例子解释一下吗?

class A
{
    int x;
};

class B : A {};

B b{};
Run Code Online (Sandbox Code Playgroud)

我认为B在上面的代码中有一个非平凡的构造函数.但是我如何观察对B隐式声明的构造函数的调用并确保我的编译器正在调用它?

c++ language-lawyer c++11

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

是现代g ++编译器解决的vtable错误的未定义引用?

根据这个虚函数必须定义,否则链接器抱怨并报告错误"未定义引用vtable",但为什么ideone编译器不会为以下代码提供任何错误?

#include <iostream>
using namespace std;
class Test
{
    public:
    Test()
    {
        cout<<"test() is called\n";
    }
    virtual void test();
};
int main() {
    Test t;
    // your code goes here
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ gcc virtual-functions g++

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

为什么这个正则表达式不匹配?

std::cout << std::regex_match(std::string("f 1/1/1 3/3/1 4/4/1"), std::regex("f \d+\/\d+\/\d+ \d+\/\d+\/\d+ \d+\/\d+\/\d+")); // -> 0
Run Code Online (Sandbox Code Playgroud)

我希望上面的正则表达式匹配给定的字符串,但事实并非如此.它出什么问题了?

它确实匹配https://www.regex101.com/,并在Notepad ++中进行测试

regex c++11

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

scanf对于short int的奇怪行为

代码如下:

#include <stdio.h>
main()
{
    int m=123;
    int n = 1234;
    short int a;
    a=~0;
    if((a>>5)!=a){
        printf("Logical Shift\n");
        m=0;
    }
    else{
        printf("Arithmetic Shift\n");
        m=1;
    }
    scanf("%d",&a);
    printf("%d\n", m);
}
Run Code Online (Sandbox Code Playgroud)

在该行之后scanf("%d",&a);,m的值变为0.

我知道它可能是由scanf引起的:a的类型很短,输入的类型是int.但这怎么会影响m的价值呢?

非常感谢 !

c scanf undefined-behavior

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

运行时的C++变量类型选择

我正在升级为特定硬件接口编写的旧应用程序.我现在需要在现有应用程序中添加对现代硬件的支持.

为此,我想为每种硬件类型创建一个类,并在用户选择系统中的哪个硬件时为一种类型或另一种类型分配变量.

例如:

HardwareType1和类HardwareType2都存在具有相同的成员函数.

object HW;  
if (userHwType = 1)  
    // initialize HW as a HardwareType1 class
}  
else{  
    // initialize HW as a HardwareType2 class  
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以HW.doSomething()在整个代码中使用,而不是每次与硬件交互时都没有条件的硬件类型.

我确信这是非常基本的,但说实话,我甚至不知道这个叫什么或者搜索哪个条款.

谢谢!

c++

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

分配连续的记忆

我正在尝试在C中分配一大块连续内存并将其打印给用户.我这样做的策略是创建两个指针(一个指向double的指针,一个指向指向double的指针),malloc中的一个指向整个大小(m*n),在这种情况下是指向double的指针.然后malloc第二个大小为m.最后一步是迭代m的大小并执行指针运算,以确保大数组中双精度数的地址将存储在连续的内存中.这是我的代码.但是当我打印出地址时,它似乎并不是连续的(或以任何顺序).如何正确打印出双打的内存地址(所有值均为0.0)?

/* correct solution, with correct formatting */


/*The total number of bytes allocated was:  4
0x7fd5e1c038c0 - 1
 0x7fd5e1c038c8 - 2
 0x7fd5e1c038d0 - 3
 0x7fd5e1c038d8 - 4*/

 double **dmatrix(size_t m, size_t n);

int main(int argc, char const *argv[])
{
    int m,n,i;
    double ** f;
    m = n = 2;  
    i = 0;

    f = dmatrix(sizeof(m), sizeof(n));

    printf("%s %d\n", "The total number of bytes allocated was: ", m * n);
    for (i=0;i<n*m;++i) {
        printf("%p - %d\n ", &f[i], i + …
Run Code Online (Sandbox Code Playgroud)

c unix memory arrays

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

C++ 11线程编译错误,删除了复制构造函数和std :: thread,为什么?

这会发出大约100行错误.错误:使用run_me复制构造函数的已删除函数等.那么,这里的问题是什么?

#include<thread>
#include<iostream>  
#include<vector>
#include<fstream>
#include<string>
#include<chrono>
using namespace std;
//creating thread to print line from file
class run_me {
    ifstream fs;
    public:
    string s;
        run_me(): fs("lliftOff.cpp",ifstream::in) {}
    void operator()(){
        cout<<"hi";
        while(getline(fs,s) ) {
            cout<<s<<endl;
        this_thread::sleep_for (chrono::seconds(1));
        }
    }
    ~run_me() {
        fs.close();
    }
};
int main() {
    thread t1{run_me()};
t1.join();
cout<<"shutting down now"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

伪析构函数名称对非类和非枚举类型有意义吗?

引用了N3797的 5.2.4/1 ,C++ 14最终工作草案:

在点之后使用伪析构函数名称.或箭头 - >运算符表示由type-name或decltype-specifier表示的非类型的析构函数.


  • 对于我们可以考虑的类型pseudo-destructor-name,它只是枚举类型吗?

c++ language-lawyer

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