Sottrazione (-)Subtraction (-)

L’operatore di sottrazione (-) sottrae il secondo operando dal primo.The subtraction operator (-) subtracts the second operand from the first. Entrambi gli operandi possono essere sia tipi integrali che a virgola mobile, oppure un operando può essere un puntatore e l'altro un Integer.Both operands can be either integral or floating types, or one operand can be a pointer and the other an integer.

Quando vengono sottratti due puntatori, la differenza viene convertita in un valore integrale con segno, dividendo la differenza per la dimensione di un valore del tipo a cui sono indirizzati i puntatori.When two pointers are subtracted, the difference is converted to a signed integral value by dividing the difference by the size of a value of the type that the pointers address. La dimensione del valore integrale viene definita dal tipo ptrdiff_t nel file di inclusione standard STDDEF.H.The size of the integral value is defined by the type ptrdiff_t in the standard include file STDDEF.H. Il risultato rappresenta il numero di posizioni di memoria di tale tipo presenti tra i due indirizzi.The result represents the number of memory positions of that type between the two addresses. Solo nel caso di due elementi della stessa matrice, si può essere certi che il risultato sia significativo, come illustrato in Puntatore aritmetico.The result is only guaranteed to be meaningful for two elements of the same array, as discussed in Pointer Arithmetic.

Quando un valore intero viene sottratto da un valore puntatore, l'operatore di sottrazione converte il valore intero (i), moltiplicandolo per la dimensione del valore a cui è indirizzato il puntatore.When an integer value is subtracted from a pointer value, the subtraction operator converts the integer value (i) by multiplying it by the size of the value that the pointer addresses. Dopo la conversione, il valore intero rappresenta le posizioni di memoria i, dove ogni posizione ha la lunghezza specificata dal tipo di puntatore.After conversion, the integer value represents i memory positions, where each position has the length specified by the pointer type. Quando il valore intero convertito viene sottratto dal valore puntatore, il risultato corrisponde ai percorsi dell'indirizzo di memoria i precedenti all'indirizzo originale.When the converted integer value is subtracted from the pointer value, the result is the memory address i positions before the original address. Il nuovo puntatore punta a un valore del tipo a cui è indirizzato il valore di puntatore originale.The new pointer points to a value of the type addressed by the original pointer value.

Vedere ancheSee Also

Operatori di addizione CC Additive Operators