小编Jos*_* D.的帖子

为什么C在使用三元运算符时不允许连接字符串?

以下代码编译没有问题:

int main() {
    printf("Hi" "Bye");
}
Run Code Online (Sandbox Code Playgroud)

但是,这不编译:

int main() {
    int test = 0;
    printf("Hi" (test ? "Bye" : "Goodbye"));
}
Run Code Online (Sandbox Code Playgroud)

这是什么原因?

c string concatenation

95
推荐指数
7
解决办法
9257
查看次数

'finally块没有正常完成'Eclipse警告

Eclipse在以下代码中给出了警告:

public int getTicket(int lotteryId, String player) {
    try {
        c = DriverManager.getConnection("jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.database, this.user, this.password); 
        int ticketNumber;

        PreparedStatement p = c.prepareStatement(
                "SELECT max(num_ticket) " +
                "FROM loteria_tickets " +
                "WHERE id_loteria = ?"
                );
        p.setInt(1, lotteryId);
        ResultSet rs = p.executeQuery();
        if (rs.next()) {
            ticketNumber = rs.getInt(1);
        } else {
            ticketNumber = -1;
        }

        ticketNumber++;

        p = c.prepareStatement(
                "INSERT INTO loteria_tickets " +
                "VALUES (?,?,?,?)");
        p.setInt(1, lotteryId);
        p.setInt(2, ticketNumber);
        p.setString(3, player); …
Run Code Online (Sandbox Code Playgroud)

java try-catch-finally

70
推荐指数
4
解决办法
5万
查看次数

'this'关键字是否可能等于null?

在一个例子中,我的教授已经实现了Equals如下:

public class Person {
    private string dni;

    // ...

    public override bool Equals(object o) {
        if (o == null)
            return (this == null);
        else {
            return ((o is Person) && (this.dni == (o as Person).dni));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有使用C#的经验,但据我所知,this在成员函数中不能为null(至少在C++和Java中,我知道的语言是这样)所以if看起来很奇怪.

我是对的还是c#中有任何组件我不知道哪个使测试成为this == null必要的?

.net c# oop equals

30
推荐指数
2
解决办法
2054
查看次数

从tweepy异常实例获取错误代码

我是python的新手,我正在尝试使用库.它提出了一个例外,我试图找出哪一个.这就是我想要的:

except tweepy.TweepError as e:
    print e
    print type(e)
    print e.__dict__
    print e.reason
    print type(e.reason)
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

[{u'message': u'Sorry, that page does not exist', u'code': 34}]
<class 'tweepy.error.TweepError'>
{'reason': u"[{u'message': u'Sorry, that page does not exist', u'code': 34}]", 'response': <httplib.HTTPResponse instance at 0x00000000029CEAC8>}
[{u'message': u'Sorry, that page does not exist', u'code': 34}]
<type 'unicode'>
Run Code Online (Sandbox Code Playgroud)

我试图达到那个代码.我试过e.reason.code没有成功,我不知道该尝试什么.

python twitter tweepy python-2.7

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

在条件中使用在do-while循环内声明的变量

我写的是这样的代码:

do {
    int i = 0;
    int j = i * 2;
    cout<<j;

    i++;
} while (j < 100);
Run Code Online (Sandbox Code Playgroud)

(http://codepad.org/n5ym7J5w)

当我的编译器告诉我我不能使用变量'j'时,我感到很惊讶,因为它没有在do-while循环之外声明.

我很好奇是否有任何技术原因导致这种情况无法实现.

c++ do-while

13
推荐指数
2
解决办法
9589
查看次数

尝试/尝试使用资源和Connection,Statement和ResultSet关闭

我最近和我的教授讨论了如何处理基本的jdbc连接方案.假设我们想要执行两个查询,这就是他的建议

public void doQueries() throws MyException{
    Connection con = null;
    try {
        con = DriverManager.getConnection(dataSource);
        PreparedStatement s1 = con.prepareStatement(updateSqlQuery);
        PreparedStatement s2 = con.prepareStatement(selectSqlQuery);

        // Set the parameters of the PreparedStatements and maybe do other things

        s1.executeUpdate();
        ResultSet rs = s2.executeQuery();

        rs.close();
        s2.close();
        s1.close();
    } catch (SQLException e) {
        throw new MyException(e);
    } finally {
        try {
            if (con != null) {
                con.close();
            }
        } catch (SQLException e2) {
            // Can't really do anything
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢这种方法,我有两个问题:

1.A),我认为,如果有异常,我们做"其他的事情",或者在该行抛出rs.close()还是 …

java correctness try-with-resources

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

const char*VS char const*const(不是什么是const)

所以,我知道char const*,char*const和char const*const之间的区别.那些是:

char*the_string:我可以更改the_string指向的char,我可以修改它指向的char.

const char*the_string:我可以更改the_string指向的char,但是我无法修改它指向的char.

char*const the_string:我无法更改the_string指向的char,但我可以修改它指向的char.

const char*const the_string:我不能更改the_string指向的char,也不能修改它指向的char.

(来自const char*const与const char*?)

现在,我的问题是:假设我正在编写一个不会修改传递给它的C字符串的函数,例如:

int countA(??? string) {
    int count = 0;
    int i;
    for (i=0; i<strlen(string); i++) {
         if (string[i] == 'A') count++;
    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)

现在,标题应该是什么?

int countA(char const * string); 
int countA(char const * const string);
Run Code Online (Sandbox Code Playgroud)

我的感觉是我应该使用第二个,因为我不会修改指针本身,也不会修改数组的内容.但是,当我查看标准函数的标题时,他们使用第一个.例

char * strcpy ( char * destination, const char * source );
Run Code Online (Sandbox Code Playgroud)

为什么?

(事实上char const *对我来说没有意义,因为如果你正在考虑抽象字符串,要么你没有修改字符串(所以,char const * const因为你没有修改指针,也没有修改内容)或者你将修改string(所以只是char *因为你可以修改内容,你可能需要分配更多的内存,所以你可能需要修改指针) …

c string const

12
推荐指数
2
解决办法
8217
查看次数

`std :: sin`在最后一位是错误的

我正在将一些程序从Matlab移植到C++以提高效率.重要的是两个程序的输出完全相同(**).

我对此操作面临不同的结果:

std::sin(0.497418836818383950)   = 0.477158760259608410 (C++)
sin(0.497418836818383950)        = 0.47715876025960846000 (Matlab)
N[Sin[0.497418836818383950], 20] = 0.477158760259608433 (Mathematica)
Run Code Online (Sandbox Code Playgroud)

所以,据我所知,C++和Matlab都使用IEEE754定义的双算术.我想我已经阅读过IEEE754在最后一位允许不同结果的地方.使用mathematica来决定,似乎C++更接近于结果.如何强制Matlab精确计算包含最后一位的sin,以便结果相同?

在我的程序中,这种行为会导致很大的错误,因为数值微分方程求解器在最后一位不断增加这个错误.但是我不确定C++移植版本是否正确.我猜测即使IEEE754允许最后一位不同,在某种程度上保证在更多IEEE754定义的双重操作中使用结果时这个错误不会变得更大(因为否则,根据IEEE754标准,两个不同的程序可以产生完全不同的输出).所以另一个问题是我是对的吗?

我想得到两个粗体问题的答案.编辑:第一个问题是相当有争议的,但不太重要,有人可以评论第二个问题吗?

注意:这不是打印中的错误,以防您想要检查,这是我获得这些结果的方式:

http://i.imgur.com/cy5ToYy.png

注意(**):我的意思是最终输出,它是一些计算的结果,显示一些带有4位小数的实数,需要完全相同.我在问题中谈到的错误变得更大(因为更多的操作,每一个在Matlab和C++中都是不同的)所以最终的差异是巨大的)(如果你很好奇,看看差异如何开始变大,这里是完整输出[很快链接],但这与问题无关)

c++ floating-point matlab ieee-754

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

Java通用方法.为什么T推断为Map?

请考虑以下代码

class MyClass {
    public MyClass(Map<String, String> m) {
        System.out.println("map");
    }

    public MyClass(SortedMap<String, String> m) {
        System.out.println("sortedmap");
    }
}
public class Test {

    public <T extends Map<String,String>> Test(T t) {
        new MyClass(t);
    }

    public static void main(String[] args) {
        new Test(new TreeMap<String,String>());
    }

}
Run Code Online (Sandbox Code Playgroud)

它打印map.为什么T推断为Map,而不是SortedMappublic <T extends Map<String, String>> Test(T t)?有没有办法改变这种行为,以便使用最具体的构造函数MyClass

java generics methods

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

高斯模糊上 sigma 和半径的关系

我在高斯模糊中看到了 sigma 和半径之间的以下关系(来自http://en.wikipedia.org/wiki/Talk%3AGaussian_blur#Radius_again以及一些程序的实现,例如http://imagej .nih.gov/ij/source/ij/plugin/filter/GaussianBlur.java第 526 行)

$$ r = \sigma \sqrt{2 log 255} - 1$$

这种关系从何而来?(我认为 255 与精度有关(255 = 2^8-1 => 8 位图像)

image-processing gaussian blur

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