这个问题是我刚才提出的这个问题答案的结果.
据称这段代码"丑陋",因为它将变量初始化为永远不会被读取的值:
String tempName = null;
try{
tempName = buildFileName();
}
catch(Exception e){
...
System.exit(1);
}
FILE_NAME = tempName;
Run Code Online (Sandbox Code Playgroud)
这确实是不好的做法吗?是否应该避免将变量初始化为永远不会实际使用的虚拟值?
(编辑 - 那么将一个String变量初始化为""一个循环之前会将值连接到String ...?或者这是一个单独的类别?
例如
String whatever = "";
for(String str : someCollection){
whatever += str;
}
Run Code Online (Sandbox Code Playgroud)
)
我对涉及MySQL中的变量声明的查询相当新.我见过各种风格,我并不完全清楚这些实际上是做什么的.我对这些实际上做了什么有疑问.
1)
set @row:=0;
SELECT name, @row:=@row + 1 AS rownum
FROM animal
Run Code Online (Sandbox Code Playgroud)
2)
SELECT name, @row:=@row + 1 AS rownum
FROM (SELECT @row:= 0) c, animal
Run Code Online (Sandbox Code Playgroud)
两者都返回相同:
name rownum
|| cat || 1 ||
|| cat || 2 ||
|| dog || 3 ||
|| dog || 4 ||
|| dog || 5 ||
|| ant || 6 ||
Run Code Online (Sandbox Code Playgroud)
上述两个查询有哪些不同之处,两者中的哪一个在范围,效率,编码习惯,用例方面采用了哪些?
3)现在如果我这样做:
set @row:=0;
SELECT name, @row:=@row + 1 AS rownum
FROM (SELECT @row:= 123) c, animal
Run Code Online (Sandbox Code Playgroud)
我明白了
name rownum …Run Code Online (Sandbox Code Playgroud) mysql sql select variable-initialization variable-declaration
在编写模板时,我想将我的变量初始化为一个值,该值用作零或null数据类型.如果我将其设置为0x00,它将作为任何类型的零/ NULL?
例如
这是模板声明
template <class T>
...
T A=0x00;
Run Code Online (Sandbox Code Playgroud)
现在,如果我定义了一个T => std :: string类型的实例,那么上面的语句是NULL什么?
怎么样" int"和" unsigned int".两者都用作"0"?
我问一个问题,它并没有得到一个非常明确的答案,但看完后这篇文章,我开始喜欢const char[]到const char*。
我在用三元初始化时遇到了困难。鉴于const bool bar,我试过:
const char foo[] = bar ? "lorem" : "ipsum" 这给了我错误:错误:初始化程序无法确定的大小
foo
const char foo[] = bar ? { 'l', 'o', 'r', 'e', 'm', '\0' } : { 'i', 'p', 's', 'u', 'm', '\0' } 这给了我错误:错误:
{令牌前的预期主表达式
有没有办法const char []用三元初始化 a ,还是我必须切换到const char*这里?
我有这么简单的代码:
int x;
Run Code Online (Sandbox Code Playgroud)
x自动具有值1.我没有设置它,但是当我调试时,它显示x为1.
是否int有默认值1?!
我的数据库中有两个不同的表,每个表都根据其"SortOrder"显示给用户.我编写了两个函数,它们接受一行(或实体)并将其排序顺序与最接近的函数交换(向上或向下,具体取决于正在执行的函数).我需要使这些函数适用于两个不同的表,具体取决于事件发生的位置(具有相同功能的多个网格视图).这是我到目前为止(再次,向下移动有一个几乎相同的功能,但我不会发布,因为它将是多余的):
protected void moveUp(String ValId, String dbName)
{
int ValueId = Convert.ToInt32(ValId);
DataModel.DataAccess.Entities dc = new DataModel.DataAccess.Entities();
if (dbName.ToLower() == "table1")
{
DataModel.DataAccess.Table1 currentValue = dc.Table1.Single(table1item => table1item.Table1ItemId == ValueId);
}
else if (dbName.ToLower() == "table2")
{
DataModel.DataAccess.Table2 currentValue = dc.Table2.Single(table2item => table2item.Table2ItemId == ValueId);
}
try
{
//make the change and update the database and gridview
}
catch (InvalidOperationException)
{
}
}
Run Code Online (Sandbox Code Playgroud)
显而易见的问题是我需要在if语句之前启动currentValue变量,否则它的"可能性"永远不会被声明,因此函数的其余部分(利用currentValue变量)将不起作用.
我的问题是:如果我不确定它将会是什么,我应该如何在if语句之前初始化变量?我认为这可能有用,但它说我仍然需要初始化它(" 必须初始化隐式类型的局部变量 "):
var currentValue; //this is the …Run Code Online (Sandbox Code Playgroud) 如果我有一个使用该rand()函数作为其初始化值的函数,那么当程序编译时,或者函数运行时,是否会找到该值?
说:
int function(int init = rand()){
return init;
}
Run Code Online (Sandbox Code Playgroud)
如果在编译时找到它,我怎样才能使初始化成为动态的?我想我会NULL用作初始化值,但我如何区分NULL和init = 0?
这是我的小程序:
enum Type
{
b = 1,
c = 2
};
int main()
{
Type b = b;
std::cout << b << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
哪个输出0.我可以得出结论,上述定义包含这些连续步骤吗?
b为变量的类型Type0默认值定义该变量和初始化并且,变量是否始终用0初始化,即使它们是显式初始化的?
我的第二个问题是 - 如果它在指定的例子中使用了它的初始化列表中的变量,为什么我不会得到关于歧义的错误?编译器是否首先尝试b在变量列表中查找,然后才检查声明的枚举?
在C语言中,是
int x, y, z = 0;
Run Code Online (Sandbox Code Playgroud)
和这个一样吗?
int x = 0;
int y = 0;
int z = 0;
Run Code Online (Sandbox Code Playgroud)
另外,如果我只是说,即使未初始化,int a;的值似乎也为零,但不是未定义的,如未初始化变量的值是什么?a
c++ ×4
.net ×1
arrays ×1
asp.net ×1
c ×1
c# ×1
char-pointer ×1
compile-time ×1
enums ×1
int ×1
javascript ×1
mysql ×1
objective-c ×1
runtime ×1
scope ×1
select ×1
side-effects ×1
sql ×1
ternary ×1