Rafał Roppel Software Architect
Temat: zabawa - pytania i zadania
Co zostanie wyswietlone po uruchomieniu ponizszego kawalka kodu?char c = 'A';
int i = 1;
System.out.print(true ? c : 0);
System.out.print(false ? i : c);
Rafał Roppel Software Architect
konto usunięte
Rafał Roppel Software Architect
konto usunięte
byte b = -8;
for (byte count=0; count<5; count++, b=(byte) (b>>1)) {
System.out.print(b);
}
konto usunięte
konto usunięte
Karol Kornecki:
Wyswietli sie -8-4-2-1-1 zamiast -4-2-1-1-1, ponieważ:
dla instrukcji for(a;b;c)
konto usunięte
Michał
Miotk
Senior Technical
Program Manager
Maciej Kowalski programista Java EE
W tym wypadku odpowiedź brzmi:
i z klasy B 2
[ciach]
Michał
Miotk
Senior Technical
Program Manager
Maciej Kowalski programista Java EE
Jerzy
M.
C#/JavaScript
Developer
Zacheusz
Siedlecki
Senior Java
Architect, Working
Manager
z klasy B i 2
Maciej Kowalski programista Java EE
Zacheusz Siedlecki:
przepraszam, ale nie widzę tutaj żadnego podstępu ani potrzeby
uruchamiania tego
Zacheusz
Siedlecki
Senior Java
Architect, Working
Manager
Zacheusz Siedlecki edytował(a) ten post dnia 07.01.10 o godzinie 00:04
Set iSet = new HashSet();
Set fSet = new HashSet();
Set dSet = new HashSet();
int start = Integer.MAX_VALUE - 10;
int stop = Integer.MAX_VALUE;
for (int i = start; i < stop; ++i) {
iSet.add(i);
fSet.add((float)i);
dSet.add((double)i);
}
System.out.println(iSet.size());
System.out.println(fSet.size());
System.out.println(dSet.size());
konto usunięte
float zmienna = 16777216.0f;
System.out.println(zmienna + 1.0f);
System.out.println(zmienna + 1.0f == zmienna);
int count1 = 0;Konrad K. edytował(a) ten post dnia 07.01.10 o godzinie 10:35
for (float x = 0.0f; x < 20000000.0f; x = x + 1.0f)
count1++;
System.out.println(count1);
int count2 = 0;
for (double x = 0.0; x < 20000000.0; x = x + 1.0)
count2++;
System.out.println(count2);
Zacheusz
Siedlecki
Senior Java
Architect, Working
Manager
Konrad K.:Jest to możliwe bez odpalania. Jeśli mniej więcej wiesz jaki jest rozkład floatów możesz strzelać, że trafiło w 1 do kilku floatów. Ale rzeczywiście można było zadać pytaie odrobinę inaczej. Mogłe ma dole dać:
10
1
10
Bez odpalenia nie umiałem odpowiedziec dokłądnie, jakie są wyniki. Poprostu jest to dla człowieka nie możliwe.
System.out.println(iSet.size() == fSet.size());
Jaki bedzie wynik poniższego kodu, i dlaczego?
int count1 = 0;
for (float x = 0.0f; x < 20000000.0f; x = x + 1.0f)
count1++;
System.out.println(count1);
int count2 = 0;
for (double x = 0.0; x < 20000000.0; x = x + 1.0)
count2++;
System.out.println(count2);
Zacheusz
Siedlecki
Senior Java
Architect, Working
Manager
konto usunięte
f + 1 == f
Zacheusz
Siedlecki
Senior Java
Architect, Working
Manager
Konrad K.:Czy Ty czasem poszukując wyjaśnienia nie trafiłeś na starego posta na moim blogu tutaj ?
dokładnie - ten sam myk - poprostu jak trafi w pierwsza liczbe float, która nie ma dokładnej reprezentacji i spełnia warunek
f + 1 == f
czyli np. rzeczona 16777217 - to sie petla nie skonczy nigdy...
public static void main(String a[]) throws MalformedURLException {liczy się precyzyjna odpowiedź ;)
java.net.URL url1 = new java.net.URL("http://o2.pl");
java.net.URL url2 = new java.net.URL("http://tlen.pl");
System.out.println(url1.equals(url2));
}
Następna dyskusja: