小编Sve*_*nov的帖子

C和C++中+ =的结果是什么?

我有以下代码:

#include <stdio.h>
int main(int argc, char **argv) {
    int i = 0;
    (i+=10)+=10;
    printf("i = %d\n", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用gcc将其编译为C源代码,则会出现错误:

error: lvalue required as left operand of assignment
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用g ++将其编译为C++源代码,我将得到没有错误,当我运行可执行文件时:

i = 20
Run Code Online (Sandbox Code Playgroud)

为什么不同的行为?

c c++

92
推荐指数
2
解决办法
7192
查看次数

HttpURLConnection:java.lang.IllegalStateException:已经连接

我正在尝试使用HttpURLClient使用HttpRestClient下面显示的类将一些POST数据发送到服务器.执行时

conn.setDoInput(true);
Run Code Online (Sandbox Code Playgroud)

我明白了

java.lang.IllegalStateException: Already connected
Run Code Online (Sandbox Code Playgroud)

我卸载了应用程序,仍然得到相同的错误.

在所有示例中,我都看到过之前调用过openConnection setDoInput.如果顾名思义,openConnection打开一个连接,它应该永远不会在`setDoInput之前使用,对吗?我错过了什么?

也许在某些时候它在执行之前崩溃了disconnect.这可能是原因吗?如果是这样,我该如何断开旧连接?

public class HttpRestClient {
static public int post(String urlStr, List<NameValuePair> data){

    HttpURLConnection conn = null;

    try {

        URL url = new URL(urlStr);


        conn = (HttpURLConnection) url.openConnection();

        conn.setDoInput(true);
        conn.setDoOutput(true);

        conn.setRequestMethod("POST");

        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getQuery(data));
        writer.flush();
        writer.close();
        os.close();

        InputStream is = conn.getInputStream();

        String dude = readIt(is);

        return 1;

    } catch (MalformedURLException e) {
        // TODO Auto-generated …
Run Code Online (Sandbox Code Playgroud)

android httpurlconnection

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

没有字段名称的元组

我注意到我可以在nimrod中声明元组而不给每个字段命名.例如:

type T1 = tuple[string, age: int]
type T2 = tuple[char, string, age: int]
Run Code Online (Sandbox Code Playgroud)

但这并不适用于最后提交的内容

type T3 = tuple[string, int] # compilation error
Run Code Online (Sandbox Code Playgroud)

这是为什么?这是有意的吗?为什么要始终命名最后一个字段?

nimrod nim-lang

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

单独链接列表,引用Rust中的随机节点

我正在尝试创建一个由节点组成的单链表,每个节点都有一个对下一个节点的引用,与该节点相关的数据,这是一个有趣的位,即对列表中随机节点的引用.给定节点的随机节点可以出现在节点本身之前,也可以出现在列表中.随机节点是可选的.这是一个图表:

       +---------+  +-------------------+
       |         v  v                   |
     +-+--+     ++--++     +----+     +-+--+
+--->+Data+---->+Data+---->+Data+---->+Data|
     +-+--+     +----+     +--+-+     +----+
       ^                      |
       +----------------------+
Run Code Online (Sandbox Code Playgroud)

该图演示了一个包含四个节点的列表.第一节点的随机引用指向第二节点.缺少第二个节点的随机引用.第三个节点的随机引用是第一个节点.第四个节点的随机引用指向第二个节点.

该列表需要仅支持添加新节点.添加节点后,只要列表存在,就可以通过删除节点使随机引用失效.

我尝试了什么:

我陷入绝对的开端 - 我无法弄清楚如何设计结构以及如何构建列表.这是我在与编译器进行一段时间的摔跤之后得到的代码:

type NodePtr<'a, T> = Option<Box<Node<'a, T>>>;

pub struct Node<'a, T: 'a> {
    data: T,
    next: NodePtr<'a, T>,
    random: Option<&'a Node<'a, T>>,
}

pub struct List<'a, T: 'a> {
    root: NodePtr<'a, T>,
}

#[cfg(test)]
mod test {
    use super::*;

    #[test]
    fn construct() {
        let mut list:List<i32> = List {root: Some(Box::new(Node {data: 5, next: None, random: None}))}; …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

android ×1

c ×1

c++ ×1

httpurlconnection ×1

nim-lang ×1

nimrod ×1

rust ×1