可能重复:
在Java中,变量有默认值,对吗?甚至数组都由编译器初始化。
所以我不明白以下几点:
int c;
for(int i = 0; i < 10; i++){
c = i + 5;
}
System.out.println("Result = "+c);
为什么我会得到一个编译器错误:
局部变量c可能没有初始化。
编译器默认情况下不是将c初始化为0吗?
那么,为什么我得到这个错误,为什么错误消失了,如果我明确地做了int c = 0
我目前正在做一个日历算法,有一个关于它的问题。我想问一下日历关于改变日历上每月的第一天的事情。
这是我的日历代码:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
int days(int year, int month)
{
int days, i;
for (i = 1; i<month; i++)
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i =
我在C++上混了一段时间,但我还是个新手。我搜索了一下,即使使用我试图解决的问题的关键字也没有结果。基本上,我只是想弄清楚如何判断变量是否没有数据。我有一个文件,我的程序读取,它搜索文件中的特定字符,并基本上使用分隔符来确定在变量中存储实际数据的位置。现在我在文件中添加了一些注释,说它不应该被编辑,这给我带来了一些问题。所以我很想统计评论的数量,但我不确定怎么做,因为我设置它的方式导致返回大量的数字。所以我想我可以尝试用一个简单的if语句来修复它,看看在运行循环时数组中是否有任何数据,如果有,只需将+1添加到我的变量中。不用说,它不起作用。这是代码。如果你知道更好的方法,请一定要分享。
siz
在调试模式下,用MSVC2008编译这个简单的函数:
int __cdecl sum(int a, int b)
{
return a + b;
}
我得到以下反汇编清单:
int __cdecl sum(int a, int b)
{
004113B0 push ebp
004113B1 mov ebp,esp
004113B3 sub esp,0C0h
004113B9 push ebx
004113BA push esi
004113BB push edi
00
我的函数有点生疏了,所以在Visual C++ 2005中有一个简单的问题-局部(对函数)整型和双精度变量是否默认初始化为0?
在下面的代码中是正确的:
void Foo()
{
int a, b, c = 0;
double d, e, f = 0.0;
}
c和f分别初始化为0和0.0,而b、c、d和e未初始化,并且在所有优化都开启的发布模式下编译时可能会包含一些垃圾?
代码:
public class A {
public static void main(String[] args) {
int i;
System.out.println(i);
}
}
当我运行这段代码时,它不是打印int的默认值,即0,而是报错The local variable i may not have been initialized。
为什么以及如果初始化是强制的,那么为什么原始数据类型有默认值?它们可能和C++一样具有垃圾值。
似乎没有办法在您的代码中有未赋值的局部变量或检查它们,因为编译器会吐出Use of unassigned local variable错误。
为什么编译器在编译时不对这些变量使用default(T)?
即使值类型很难做到,引用类型在这种情况下也可以很容易地初始化为null,对吧?
下面是一些测试代码:
public void Test ( )
{
int x;
string s;
if ( x == 5 )
Console.WriteLine ( 5 );
if ( s != null )
Console.WriteLine
我最近开始学习C#后,C++。在书中我看到了代码
public class Panda
{
public string name;
public static int population;
public Panda(string n)
{
name = n;
population += 1;
}
}
然后我创建了两个对象
Panda first=new Panda("po");
Panda second = new Panda ("bo");
在那之后,我把人口的值放在console=2中
为什么没有将默认值赋给变量,这些变量还没有在带有main函数的类中初始化?
class Test {
public static void main(String[] args) {
int x;// x has no default value
String y;// y has no default value
System.out.println("x is " + );
System.out.println("y is " + );
}
}
而如果变量在没有任何main函数
我正在上一门课程,我们在系统级编程方面做了很多工作,现在我们要开始介绍C了。我们得到了一些代码,并被告知用每个'printf‘语句打印出来的值。我知道如何用Java和Python等语言定期打印语句。但是,给出的代码中有一些我从未见过的打印部分的正文。语句按A、B、C、D顺序执行,这是代码:
int t; /* This variable is global */
{
int t = 2;
printf("%d\n", t); /* A */
{
printf("%d\n", t); /* B
我正在研究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);
}
我知道这可能会被否决,但这件事让我很感兴趣
public class finaltesting
{
public static final String v=900; //requires initialization
public static void main(String []args)
{
final int c; // doesn't need initialization
switch(get())
{
case 0:
System.ou
我刚刚注意到一些奇怪的汇编语言代码的空主方法。
//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
我有以下代码。但是我看到在传递Input.txt文件之前,"in“和"out”变量被设置为null。我们为什么要这样做呢?
package Test;
import java.io.*;
public class CopyFile {
public static void main(String args[]) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStr
class TestMe{
public static void main (String args[]){
String s3;
System.out.print(s3);
}
}
为什么编译器会给出错误,引用对象的默认值是null,为什么它不是输出...??
error: variable s3 might not have been initialized
null是Object类型的吗?
class C {
int i;
String s;
public C() {}
}
s永远是null吗?
那么像int这样的简单类型呢?那会是什么?零值还是任意值?
方法中的局部变量呢?
public void meth() {
int i;
}
i的统一值是什么?
然而,依赖这种默认值通常被认为是糟糕的编程风格。
好吧,你建议我们怎么做?
class A {
String s = "";
int i = 0;
}
或:
class A {
String s;
int
在下面的示例中,Visual为我提供了一个尚未声明/实例化的变量的Intellisense。这个变量真的在作用域中,可以在它自己的声明的右边使用吗?如果没有,为什么Intellisense会将其显示为选项?这仅仅是关于Intellisense如何工作的一个怪癖吗?
var myVariable1 = 1;
// throws compiler error, but VS offers it as an option of something to type
// when I start typing "myv"...
var myVariable2 = myVariable2
有人能解释一下为什么我会得到这个吗?
CGRect rect;
NSLog(@"rect is %@", NSStringFromCGRect(rect));
// rect is {{-1.99891, 2.58159e-38}, {1.91754e-41, 8.46552e-39}}
那么原语呢?
根据我的理解,默认构造函数将对象的状态初始化为默认值,所以如果我像这样提供一个显式的无参数公共构造函数,那么d和e的值如何仍然被初始化为零,因为在这种情况下,默认构造函数没有被调用。
public class B extends A{
private int d;
private int e;
public B() {
System.out.println(d);
System.out.println(e);
}
}
默认构造函数做的唯一的事情就是调用super(),那么为什么我在这里明确提到了一个构造函数,而A有一个受保护的