2012-10-18 6 views
11

Sto leggendo alcuni tutorial sulla programmazione incorporata e uno di loro dice int e signed int sono diversi ma non spiegano come o perché.Differenza tra int e la dichiarazione firmata int

capisco perché unsigned int e int sono diverse, ma int e signed int essere diversi è una novità per me.

+2

Questo è nuovo anche per me. È detto tutorial online? Se così fosse, un link sarebbe molto apprezzato. –

risposta

13

È solo per motivi storici. Oggi ogni volta che si dichiara int si ottiene un signed int. L'unico punto in cui potresti vedere una differenza anche con i compilatori di oggi è con char rispetto a signed char che sono diversi per specifica (e notabili quando si assegna una stringa letterale) ma non con int.

+0

qual è la differenza tra char e firmato char allora? Per favore, può dare un esempio? – Anon

+2

@Anon - la cosa è che è _undefined_ se un 'char' è' signed' o 'unsigned' di default. Lo standard non dice nulla a riguardo. –

+0

@ Kiril, grazie. +1 da me. Chiaro e semplice. – Anon

2

Per quanto ne so, la differenza esiste solo per il tipo di dati char. Dove char a; può essere signed char a; o unsigned char a; a seconda delle opzioni del compilatore. Come dice this article. (--signed_chars) Per i tipi di dati int, non vi è alcuna differenza tra int e signed int.

+0

+1, accettando la risposta di Eznme perché lui/lei ha risposto prima e la stessa risposta. – Anon

+1

'char' non è mai lo stesso tipo di' unsigned char' o 'signed char', anche se ha lo stesso range e la stessa rappresentazione di uno di essi. –

+0

@SteveJessop Potresti spiegarmi di più o indicarmi un posto dove posso leggere a riguardo? – CCoder