我有以下代码:
#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)
为什么不同的行为?
我正在尝试使用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) 我注意到我可以在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)
这是为什么?这是有意的吗?为什么要始终命名最后一个字段?
我正在尝试创建一个由节点组成的单链表,每个节点都有一个对下一个节点的引用,与该节点相关的数据,这是一个有趣的位,即对列表中随机节点的引用.给定节点的随机节点可以出现在节点本身之前,也可以出现在列表中.随机节点是可选的.这是一个图表:
+---------+ +-------------------+
| 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)