Stai usando un browser non aggiornato. Potresti non visualizzare correttamente questo o altri siti web. Dovreste aggiornare o usare un browser alternativo.
extern int read( int fd, void *s, int size );
extern int write( int fd, void *s, int size );
int main() {
int n;
read( 0, &n ,10 );
if (! ( ( (n % 2) == 0 ) ? 0 : 1 ) ) {
write( 1, "Pari.\n", 6 );
return 0;
}
write( 1,"Dispari.\n",9 );
return 1;
}
ok, carino il trick con il not e il ternario, ma a parer mio è più corretto (formalmente), dare solo un return e piazzarci un else, visto che essendo un main e non una funzione, logicamente dovrebbe tornare 0 (exit_success) anche se il valore è dispari. Altrimenti fai una funzione che torna 0 o 1 a seconda del risultato, ma non lo stampa.
E poi, capisco che li hai dichiarati extern e non è difficile capire come funzionano, ma dove sono implementati read e write? Che oltretutto vedendo gli argomenti sono decisamente più scomodi di semplici printf e scanf...
orakool, includendo gli header non poteva mettere tutto in una riga, con quella cosaccia li si, voleva imitarmi ma è stato un fail xD
@rohack: per diversificare l'esercizio non serve unsare un puntatore...avresti mai pensato ad usare le regex come me?
E poi, capisco che li hai dichiarati extern e non è difficile capire come funzionano, ma dove sono implementati read e write? Che oltretutto vedendo gli argomenti sono decisamente più scomodi di semplici printf e scanf...
Sono syscalls. E printf e scanf sono meno performanti di write e read.
Piuttosto il fatto fondamentale e' che non funziona
Codice:
meh@lolcahost ~ $ ./lol
34
Dispari.
Fara' anche un read di 10, ma int e' 4 bytes, quindi c'e' un bof di 6 bytes, inoltre il controllo viene fatto sul risultato del valore della sequenza dei 4 caratteri inseriti.
orakool ha detto:
@Shura: appunto, era lì che volevo arrivare, il C non è un linguaggio da criptare, viene fuori un fail miserabile xD