为什么C99混合声明和代码没有在Linux内核或GNOME等开源C项目中使用?
我非常喜欢混合声明和代码,因为它使代码更具可读性,并且通过将变量的范围限制在最窄的范围内来防止难以看到错误.这是Google for C++推荐的.
我正在尝试一个我在网上找到的程序.为什么有必要在声明的最后加上大括号?它给出了一个错误:"Byte没有构造函数".
Dim data As Byte() = New Byte(1023) {}
Run Code Online (Sandbox Code Playgroud)
我不能把这样的代码,它产生错误"字节不能是一维数组".
Dim arr As Byte() = New Byte()
Run Code Online (Sandbox Code Playgroud)
你能解释一下为什么会这样吗?
我正在编写非常耗费处理器的密码学代码(C#),所以我正在寻找任何性能提升,无论多小.我已经在这个问题上听到了双方的意见.
是否有任何性能优势
int smallPrime, spGen;
for (int i = 0; i < numSmallPrimes; i++)
{
smallPrime = smallPrimes[i];
spGen = spHexGen[i];
[...]
}
Run Code Online (Sandbox Code Playgroud)
在这?
for (int i = 0; i < numSmallPrimes; i++)
{
int smallPrime = smallPrimes[i];
int spGen = spHexGen[i];
[...]
}
Run Code Online (Sandbox Code Playgroud)
编译器是否已经这样做了?
我偶然发现了一段代码如下:
void check()
{
int integer = 7;
//integer2 is not declared anywhere
int check = integer, integer2;
//after running
//check = 7
//integer = 7
//integer2 = 0
}
Run Code Online (Sandbox Code Playgroud)
逗号的目的是什么?
我试图了解JavaScript的范围.如果我在函数之外声明一个变量,那么它就是GLOBAL.因此,我测试了以下代码以了解执行顺序.在下面的代码中,我期望"demo1"采用全局值"Volvo",因为我在声明函数内部具有相同名称的局部变量之前呈现该文本.但令我惊讶的是,我认为价值是"未定义的".
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
var carName = "Volvo";
myFunction();
document.getElementById("demo").innerHTML = carName;
function myFunction() {
document.getElementById("demo1").innerHTML = carName;
var carName = "Volvo1";
document.getElementById("demo2").innerHTML = carName;
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
结果:
Volvo
undefined
Volvo1
我进一步修改了如果在函数内部声明另一个Global变量会发生什么,如下所示:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
var carName = "Volvo";
myFunction();
document.getElementById("demo").innerHTML = carName;
function myFunction() {
document.getElementById("demo1").innerHTML = carName;
//declaring another global variable
carName = "Volvo1";
document.getElementById("demo2").innerHTML = carName;
}
</script>
</body> …Run Code Online (Sandbox Code Playgroud) 在变量声明之后,星号(*)和数字的含义是什么?如图所示WpName As String * 6
Public Type WayPoint
WpIndex As Integer
WpName As String * 6
WpLat As Double
WpLon As Double
WpLatDir As String * 1
WpLonDir As String * 1
End Type
Run Code Online (Sandbox Code Playgroud) 我习惯于看到类似的东西,id<NSCopying> myVar或者MyObject<NSCopying> myVar我们在说明有问题的变量可以很高兴地拥有NSCopying调用它的方法,而编译器不会摇摆不定.
但是我最近发现了一些定义了这样一个变量的代码:
Class<NSCopying> myClass;
Run Code Online (Sandbox Code Playgroud)
我想知道这实际意味着什么,因为它似乎与前两个例子略有不同.似乎我们说变量myClass可以愉快地接受来自的方法调用NSCopying- 但是具有能够接受这些实例变量方法的类类型似乎没有多大意义.
在我看来,类型的变量在技术上是对象本身,这可能让我或编译器(可能是我!)感到困惑.
所以我猜我在问:
Class<NSCopying> myClass;实际上是什么意思Class<NSCopying> myClass;有所不同id<NSCopying> myVarClass<NSCopying> myClass;有意义地使用?笔记:
NSCopying作为一个例子,并不是我用例的组成部分Class我指的是Class用于声明类型变量的Obj-C关键字Class.我不是将它用作任何类类型的通用术语.我对TSQL有点新手(主要是MySQL体验).我遇到了一些参数声明,我不确定在存储过程中使用与没有'as'关键字的情况下声明的差异是什么(如果有的话):
CREATE PROCEDURE [dbo].[SomeStoredProc]
@variable1 varchar(50),
@variable2 as varchar(50)
...
Run Code Online (Sandbox Code Playgroud) 我们正在与一家新公司合作,他们有一个编码标准,他们在方法的第一行立即声明方法中使用的所有 Javascript 变量。
我问他们这样做是否有原因,并只是被告知这是他们的编码标准,所以我用谷歌搜索,显然这确实是一些网站推荐的标准。
我的第一个想法是,如果一个方法太大,以至于您实际上发现将所有变量放在顶部很有帮助,那么您的方法太大并且需要分解。
所以我的问题是,在顶部声明变量而不是在第一次使用变量时声明它们的目的是什么?它只是一个编码标准,旨在帮助那些编写(在我个人看来)我认为太长的方法的人,还是还有其他我忽略的好处?
在作者 Brian W. Kernighan 和 Dennis M. Ritchie 的《C 编程语言》第二版中,他们讨论了声明符和直接声明符。讨论从本书的第 14 页开始。122 与dcl和direct-dcl的 您能以易于理解的方式解释声明符和直接声明符之间的区别吗?是什么让它变得直接?
另外,在第 225
其中直接声明符是标识符或带括号的标识符。特别是,它不能通过 typedef 实现函数类型。
在我看来,声明符是变量或函数的声明。在“TD”中,T部分指定其说明符和类型,D部分指定标识,表示变量或函数的唯一标识名称。这和语言的语法有一定的关系。
声明符是否是间接的,因为它们没有像direct-declarator中那样指定为直接的?
c syntax programming-languages declaration variable-declaration
c ×2
c# ×2
javascript ×2
scope ×2
variables ×2
.net ×1
byte ×1
c99 ×1
class ×1
declaration ×1
hoisting ×1
html ×1
objective-c ×1
parameters ×1
performance ×1
syntax ×1
t-sql ×1
vb.net ×1
vb6 ×1