今天,我发现我多年来对VB.NET的一些假设并不是真的(令人担忧!)我假设在循环中声明的变量具有声明它的迭代的生命周期,但实际上它似乎具有整个过程的生命周期。
例如:
For i As Integer = 0 To 1
Dim var1 As Boolean
Console.WriteLine(var1.ToString())
var1 = True
Console.WriteLine(var1.ToString())
Next
Console.Rea
如何使用Check样式检查The value of the local variable is not used和The value of the field is not used?在Eclipse中,对此有一个警告。但是在Checkstyle中没有(我使用sun_checks.xml,稍微修改了一下)。
我试着写我自己的支票,但作为新手,我只找到了如何计算变量声明(使用TokenTypes.VARIABLE_DEF),但我不知道如何找到这些变量和字段的用法。
“”“
int* fun(){
int x=5;
int* p=&x;
return p;//problematic part
}
int main(){
int *c=p; //error when int "*c=&x;"
*c=13;
}
“”“
当我在main函数中创建一个“整数指针”,然后通过指针p将一个局部变量的地址赋给那个“整数指针”,并给那个特定的地址赋一个新值时,它没有给出任何错误或警告,我认为这是应该的。因为当我试图通过"&
可能重复:
在Java中,变量有默认值,对吗?甚至数组都由编译器初始化。
所以我不明白以下几点:
int c;
for(int i = 0; i < 10; i++){
c = i + 5;
}
System.out.println("Result = "+c);
为什么我会得到一个编译器错误:
局部变量c可能没有初始化。
编译器默认情况下不是将c初始化为0吗?
那么,为什么我得到这个错误,为什么错误消失了,如果我明确地做了int c = 0
我正在研究Euler项目,该项目声明:
毕达哥拉斯三重奏是由三个自然数组成的集合,a<b< c,其中,
a^2 + b^2 = c^2
例如,3^2 + 4^2 =9+ 16 = 25 = 52。
有一个毕达哥拉斯三重奏,其a+b+c= 1000。找到产品abc。
以下是我迄今所做的工作:
class Project_euler9 {
public static boolean determineIfPythagoreanTriple(int a, int b, int c) {
return (a * a + b * b == c * c);
}
我正在尝试将中的一些程序转换为客户端/服务器应用程序,这些应用程序可用于捕获标志场景,以教授利用漏洞开发。我遇到的问题是,我不确定Visual Studio (我使用的是2005专业版)如何决定将变量分配到堆栈的哪个位置。
当我编译并运行示例1:
int main() {
int cookie;
char buf[80];
printf("buf: %08x cookie: %08x\n", &buf, &cookie);
gets(buf);
if (cookie == 0x41424344)
pri
如果变量未赋值,则它在运行时采用默认值。例如
int A1;
如果我在运行时检查A1的值,它将是0;那么为什么在编译时它抛出一个未赋值的错误;为什么CLR在运行时不大量使用默认值;
int A1;
int B1 = A1+10;
当A1的默认值为0时,应为11;
有项目属性,我可以检查“为未分配的变量分配默认值”;
有人能告诉我在哪里可以找到它吗?
当声明paymentstatus为null或在" if“语句中有值时,我得到未赋值变量"ps”的错误用法。我想我已经宣布了ps,但很明显我做错了什么。为什么编译器会抱怨这个呢?
下面是它的上下文中的错误:
public IList<BestsellersReportLine> DailyBestsellersReport()
{
OrderStatus os;
PaymentStatus? ps;
ShippingStatus ss;
int bi
"int size“从哪里得到它的值?我读了1000遍的代码,但我仍然不知道初始化的“大小”在哪里,我是java的新手,但我不明白这个,代码工作正常--任何帮助都会很好。提前感谢
public class Study {
public static void main(String[] args) {
Queue queue = new Queue();
for (int i = 0; i <= 20; i++)
queue.enqueue(i);
while (!queue.empty())
System.out.print
gcc编译器忽略调试生成时的uninitialized variable warning。这对我来说很奇怪,有人能帮我理解这一点吗?
## Program
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, max;
int count;
if (argc < 2) {
return -1;
}
max = atoi(argv[1]);
我试图在VB.net中使用IO对象,而不是从声明点初始化。我在Try..Catch块中的几个地方使用对象,然后在Finally块中再次使用它。就我的问题而言,您可以忽略代码的方法调用。VS显示了以下警告:变量'objSourceDirectory‘在被赋值之前使用。在运行时可能会产生空引用异常。
我相信在代码中的某些地方进行安全检查--空引用是不应该发生的,但是我怎么才能摆脱这个警告呢?我会在声明点将变量初始化为空,但这在IO.DirectoryInfo中是不可能的,因为它没有没有参数的构造。我怎么才能解决这个问题?
Dim object1 As IO.DirectoryInf
下面的代码试图利用Delphi的参考计数功能。
但是,FastMM4 in FullDebugMode reports DoStuff1会导致内存泄漏,而DoStuff2不会。你能帮我解释一下原因吗?这两种程序在幕后的表现不应该完全一样吗?
program Project_SO;
{$APPTYPE CONSOLE}
uses
FastMM4,
SysUtils;
type
ITestFunc = interface
['{B3F6D9A7-FC77-40CE-9BBF-C42D7037A596}']
function DoIt(X,Y: I
在以下示例中:
class Test
{
public:
Test(int _value) { value = _value; };
const bool operator==(int _value) const { return value == _value; };
private:
int value;
};
int main(void)
{
int a;
a == 1;
Test b(1);
b == 1;
return 0;
}
汇编提供了以下内容:
$ g++ -Wall -pedantic -o test t
我有点糊涂。据我所知,如果您在C中声明一个int,而不对其进行初始化,则用于例如:int x;
因此它的价值是不确定的。因此,如果我们试图使用它,或应该有未定义的行为。
因此,如果我在VS2010中运行以下代码,程序就会崩溃。
int main(){
int a;
printf("%d\n",a);
return 0;
}
现在让我们看一看下一段代码,它没有提供任何警告,也没有崩溃(为什么?)
void foo(int *var_handle){
// do nothing
}
int main(){
int a;
foo(&a
我刚刚注意到一些奇怪的汇编语言代码的空主方法。
//filename: main.c
void main()
{
}
拆卸:
push ebp
mov ebp,esp
sub esp,0C0h; why on the earth is it reserving 192 bytes?
push ebx
push esi
push edi ; good compiler. Its saving ebx, esi & edi values.
lea edi,[ebp
我尝试编写一个返回随机像素颜色数组的函数,因此当我调用randomPalette(i)时,该函数将创建一个随机的i颜色数组。下面是我的代码。在表达式必须具有常量值的情况下,random[colors]会显示错误。我也不知道原因。如何修复它?
pixel* randomPalette(int colors){
pixel random[colors] ;
int i, x;
srand(time(NULL)); //generate a random seed
for (i = 0; i < colors; i++){
x = rand() % 256;
random[i