我在这里 char text[60];
然后我做了一个if:
if(number == 2)
text = "awesome";
else
text = "you fail";
Run Code Online (Sandbox Code Playgroud)
它总是说表达式必须是可修改的L值.
A类使用初始化列表将成员设置为参数值,而B类使用构造函数体内的赋值.
只要我保持一致,任何人都可以给出任何理由而不喜欢一个吗?
class A
{
String _filename;
A(String filename) : _filename(filename)
{
}
}
Run Code Online (Sandbox Code Playgroud)
class B
{
String _filename;
B(String filename)
{
_filename = filename;
}
}
Run Code Online (Sandbox Code Playgroud) 我知道有关元组拆包的内容,但是这个赋值是什么,你在一行上有多个等号?一个啦a = b = True
当RHS可变时,它总是让我感到沮丧,但我在找到正确的关键词以便在文档中搜索时遇到了麻烦.
在Java中,我这样做是为了修剪一个字符串:
String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.trim();
System.out.println("after->>"+input+"<<-");
Run Code Online (Sandbox Code Playgroud)
输出是:
before->> some Thing <<-
after->>some Thing<<-
Run Code Online (Sandbox Code Playgroud)
作品.但我想知道如果通过为自己分配一个变量,我做的是正确的.我不想通过创建另一个变量并为其分配修剪值来浪费资源.我想在原地进行修剪.
我这样做对吗?
我正在阅读Python文档中的赋值语句(http://docs.python.org/reference/simple_stmts.html#assignment-statements).
因此引用:
如果目标是括在括号中或方括号中的目标列表:对象必须是与目标列表中的目标具有相同数量的项目的可迭代对象,并且其项目从左到右分配给相应的目标.
读完之后,我想写一个这样的样本:
a = 5
b = 4
a, b = a + b, a
print a, b
Run Code Online (Sandbox Code Playgroud)
我的假设是a和b都应该具有9的值.
但是,我被证明是错的.'a'的值为9,'b'的值为5.
有人可以帮助我更好地理解这一点吗?为什么要分配旧值'a'而不是新值?根据文档,首先会分配一个值?我错过了什么吗?
public class Java{
public static void main(String[] args){
final byte x = 1;
final byte y = 2;
byte z = x + y;//ok
System.out.println(z);
byte a = 1;
byte b = 2;
byte c = a + b; //Compiler error
System.out.println(c);
}
}
Run Code Online (Sandbox Code Playgroud)
如果涉及任何int-sized或者更小的表达式的结果总是为int,即使两个字节的总和适合一个字节.
当我们添加两个适合字节的最终字节时,为什么会这样? 没有编译器错误.
在此处的Go Web服务器示例中:http://golang.org/doc/effective_go.html#web_server
以下代码行有效
var addr = flag.String("addr", ":1718", "http service address")
Run Code Online (Sandbox Code Playgroud)
但改变它
addr := flag.String("addr", ":1718", "http service address")
Run Code Online (Sandbox Code Playgroud)
是一个编译错误.为什么?是否与函数的返回类型*string而不是面部有什么关系string?这有什么不同?
更新:感谢您指出:=顶层不允许这样做.知道为什么这种不一致性在规范中?我没有看到任何理由在块内部行为有所不同.
在C#中,如果我有List<T>,我有类型的对象T,我怎么能在替换特定项目List<T>类型的对象T?
这是我尝试过的:
List<CustomListItem> customListItems = new List<CustomListItem>();
CustomListItem customListItem1 = new CustomListItem() { name = "Item 1", date = DateTime.MinValue};
CustomListItem customListItem2 = new CustomListItem() { name = "Item 2", date = DateTime.MinValue };
CustomListItem customListItem3 = new CustomListItem() { name = "Item 3", date = DateTime.MinValue };
customListItems.Add(customListItem1);
customListItems.Add(customListItem2);
customListItems.Add(customListItem3);
CustomListItem newCustomListItem = new CustomListItem() { name = "Item 4", date = DateTime.Now };
customListItem2 = customListItems.Where(i=> i.name == "Item 2").First(); …Run Code Online (Sandbox Code Playgroud) 此链接指出"当自动数组或结构具有部分初始化程序时,其余部分初始化为0".我决定尝试我读到的内容,并编写以下代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
//int arr[3] = {2}; // line no. 7
struct s {
int si;
int sj;
};
struct s myStruct;
myStruct.si = 9;
printf("%d\n", myStruct.sj);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么4096(我相信这是一些"垃圾"价值)在我评论时打印出来line no. 7,0当我取消评论时我得到了line no. 7.我不认为arr声明与main()激活记录(或更确切myStruct)有关,应该是这样(如果我们没有line no. 7注释):
---------------
| Saved PC |
---------------
| arr[2] |
---------------
| arr[1] |
---------------
| arr[0] |
---------------
| si …Run Code Online (Sandbox Code Playgroud) 为什么赋值运算符(=)在foreach循环中无效?我正在使用C#,但我认为该参数对于其他支持的语言foreach(例如PHP)是相同的.例如,如果我这样做:
string[] sArray = new string[5];
foreach (string item in sArray)
{
item = "Some assignment.\r\n";
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,"无法分配给'item',因为它是'foreach迭代变量'."