If
下面給出的邏輯在C語言中運行良好,但它不能在java中工作....爲什麼???
它在編譯時給出java錯誤。如果條件在java
class test
{
public static void main(String[] args)
{
int i;
if(i=4)
System.out.println("hello");
}
}
If
下面給出的邏輯在C語言中運行良好,但它不能在java中工作....爲什麼???
它在編譯時給出java錯誤。如果條件在java
class test
{
public static void main(String[] args)
{
int i;
if(i=4)
System.out.println("hello");
}
}
在C/C++中,任何非零值都被認爲是真,零被認爲是假。也就是說,int和bool是可以互換的。所以if (i = 4)
在C/C++中是正確的。由於i
的值爲4,這相當於if (4)
。但在Java中,布爾值與int不同,並且不能在需要布爾值的情況下使用int。請注意,i == 4
是布爾值,但i = 4
是int。最後一項任務,沒有比較。
你需要在你的if語句使用比較操作符(==
),而不是賦值運算符(=
)。
在C中,有效賦值運算符is the value that is assigned的結果。如果您的示例使用C語言,則生成的代碼將等同於if(4)
,該語言的計算結果爲true語句,並且代碼始終在編譯器沒有任何抱怨的情況下執行。 Java會檢查一些可能意味着其他內容的情況,比如這個。
注意雙等號==
class test
{
public static void main(String[] args)
{
int i = 4;
if(i==4)
System.out.println("hello");
}
}
它會用C編譯,因爲聲明的,如果在C條件可以是int類型的。但是,在您的情況下,您將4分配給i
,並且它不會執行您期望它在C中執行的操作。
if (i=4) {
}
將工作在C但不會做你的期望。它實際上會檢查我不是0。
Java強制您擁有一個表達式,其值爲一個布爾值。因此你需要==運算符。在這種情況下,賦值運算符將評估爲int。
我不會同意它在C中運行良好。即使它編譯,它也會令人困惑。
這也將用C
int i = 0;
if (i == 4) // i == 4 is not true
cout << "hi";
if (i = 4) // i = 4 which is treated as true
cout << "hello";
這就是爲什麼它是Java不允許打印「你好」。你必須寫
int i = 0;
if (i == 4) // false
System.out.println("hello");
最接近你可以得到這個問題是使用布爾類型。
boolean b = false;
if (b = true)
System.out.println("hello");
這個編譯,但幾乎肯定是一個錯誤。
一個地方分配常用的是在文本
BufferedrReader br =
String line;
// assigns and checks the value of readLine()
while((line = readLine()) != null) {
}
的讀取線在C的分配的結果是所分配的值。 – qbert220
是的。我只是在擡頭確認。我知道這是真的還是指定的價值,只是不確定是哪一個。我編輯來反映這一點。 –
我有理論認爲if條件需要一個類型爲'boolean'的返回值,但是在Java中,一個變量的(成功)聲明沒有返回值。那麼爲什麼會有錯誤發生。 – reporter