konto usunięte

Temat: Pytanie do Specjalistów Javy, HR i ludzi specjalizujących...

Marcin G.:
Mateusz G.:
Zadanie które pokazałeś w każdym języku będą miały taką samą odpowiedź (rodzina C)

Nie do końca.
http://stackoverflow.com/questions/17514805/behaviour-...

<pstryczek-w-nos>Spróbuj w C i Objective-C a nie C++. Wynikiem jest 5 :)</pstryczek-w-nos>

Oczywiście dostaniesz warning:

test.c:8:16: warning: multiple unsequenced modifications to 'y' [-Wunsequenced]
return ++y + y-- - --y;
^ ~~
1 warning generated.

ale wynik będzie jednoznaczny z Javą :)Ten post został edytowany przez Autora dnia 03.02.14 o godzinie 22:59

konto usunięte

Temat: Pytanie do Specjalistów Javy, HR i ludzi specjalizujących...

Mateusz G.:
Marcin G.:
Mateusz G.:
Zadanie które pokazałeś w każdym języku będą miały taką samą odpowiedź (rodzina C)

Nie do końca.
http://stackoverflow.com/questions/17514805/behaviour-...

<pstryczek-w-nos>Spróbuj w C i Objective-C a nie C++. Wynikiem jest 5 :)</pstryczek-w-nos>
(...) wynik będzie jednoznaczny z Javą :)

No właśnie nie. Sęk w tym że w przypadku C/C++ jest to zależne od kompilatora. Specjalnie dla Ciebie przetestowałem to teraz dla C przy porannej kawie w VS 2012 i wynik to...
4.
Referencja C/C++ jasno określa że tego typu wyrażenia są unspecified.
Natomiast w Javie / C# (nie wiem jak w Obj-C) wynik takich wyrażeń jest określony.Ten post został edytowany przez Autora dnia 04.02.14 o godzinie 08:24

konto usunięte

Temat: Pytanie do Specjalistów Javy, HR i ludzi specjalizujących...

Sprawdzałem ten pierwszy przykład przy użyciu GNU C, wynik: 4, JAVA, wynik: 5. W przykładzie 2 z rekurencją, GNU C: wynik: 4, JAVA: wynik: 436

Co by było przykładem że te testy mają jakiś sens, bo jak widać na takich jakby się wydawało głupotach można nieźle się przejechać.

konto usunięte

Temat: Pytanie do Specjalistów Javy, HR i ludzi specjalizujących...

Nie wiem skąd Wy ten wynik naprawdę bierzecie ale zakładam że mówimy o standardzie c99 ;)


mateusz.gajewski@Serafin-2 ~> gcc -std=c99 test.c
test.c:8:16: warning: multiple unsequenced modifications to 'y' [-Wunsequenced]
return ++y + y-- - --y;
^ ~~
1 warning generated.
mateusz.gajewski@Serafin-2 ~> ./a.out
and the winner is 5


Nawet pokusiłem się o napisanie tego w Objective-C:

#import <Foundation/Foundation.h>

int myFunc(int x) {
int y = ++x;
return ++y + y-- - --y;
}

int main(int argc, char **argv) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

int x = 2;
NSString *s = [NSString stringWithFormat:@"and the winner is: %d", myFunc(--x)];

NSLog(s, nil);

[pool drain];

return 0;
}


Chwila prawdy:

mateusz.gajewski@Serafin-2 ~> clang -framework Foundation -o a.out test.m
test.m:5:16: warning: multiple unsequenced modifications to 'y' [-Wunsequenced]
return ++y + y-- - --y;
^ ~~
1 warning generated.
mateusz.gajewski@Serafin-2 ~> ./a.out
2014-02-04 10:08:48.622 a.out[36238:507] and the winner is: 5

konto usunięte

Temat: Pytanie do Specjalistów Javy, HR i ludzi specjalizujących...

No mi wychodzi 4:

http://www.compileonline.com/compile_c99_online.php


#include <stdio.h>
#include <stdlib.h>

int myFunc(int x)
{
int y = ++x;
return ++y + y-- - --y;
}

int main()
{
int x = 2;
printf("%d", myFunc(--x));
return 0;
}


i odpowiedź


Compiling the source code....
$gcc -std=c99 main.c -o demo -lm -pthread -lgmp -lreadline 2>&1


Executing the program....
$demo

4

konto usunięte

Temat: Pytanie do Specjalistów Javy, HR i ludzi specjalizujących...

To bardzo ciekawe bo sprawdziłem na serwerze z Linuxem i wynik jest 4 :) Pod clangiem na tym samym środowisku 5 :)

Na Mac OS Xie via LLVM jest 5 :P Niech żyje c!Ten post został edytowany przez Autora dnia 04.02.14 o godzinie 12:08



Wyślij zaproszenie do