C işaretli tamsayılar sayıları temsil eder. Eğer ave btürleri tamsayı imzalanmış bir değişkenlerdir, standart bir derleyici ifadesi yapmanız gerektiğinden asla a+=biçine mağazayı akendi değerlerinin aritmetik toplamından daha başka bir şey. Aritmetik toplamı uymaz olsaydı, emin olmak için aişlemci, belki oraya koymak mümkün olmayabilir, ancak standart truncate için derleyici gerektirmediğine veya değeri kaydırmak veya aşan değerler ise bu konuda başka bir şey yapmak türleri için sınırlar. Standart gerektirmezken, C uygulamalarının aritmetik taşmaları işaretli değerlerle yakalamasına izin verildiğini unutmayın.
C'deki işaretsiz tamsayılar, daha büyük tiplere dönüştürme veya bunlarla yapılan işlemleri içeren senaryolar haricinde, ikisinin bir miktar gücü olan uyumlu tam sayıların soyut cebir halkaları gibi davranırlar. Herhangi bir boyuttaki bir tamsayıyı 32-bit işaretsiz tipe dönüştürmek, 4.294.967.296 tamsayı moduna uygun olan şeylere karşılık gelen elemanı verecektir. 3'ün 2'den çıkarılmasının nedeni 4,294,967,295'in, 4,294,967,295'e uygun bir şeye 3'e uygun bir şey eklemenin 2'ye uygun bir şey vermesidir.
Soyut cebirsel halka tipleri genellikle elverişli şeylerdir; maalesef C, bir türün halka olarak davranıp davranmayacağı konusunda belirleyici faktör olarak imzayı kullanır. Daha kötüsü, işaretsiz değerler, daha büyük türlere dönüştürüldüğünde halka üyeleri yerine sayı olarak kabul edilir ve intüzerlerine herhangi bir aritmetik gerçekleştirildiğinde sayılara dönüştürülmekten daha küçük işaretsiz değerler olarak kabul edilir . Eğer vbir uint32_teşit ise 4,294,967,294, o zaman v*=v;yapmalıdır v=4. Ne yazık ki, int64 bit ise, o zaman ne v*=v;yapabileceğini söylemek mümkün değil.
Standart olduğu gibi, bir kişinin cebirsel halkalarla ilişkili davranışı istediği durumlarda işaretsiz türler ve sayıları temsil etmek istediği zaman imzalı türler kullanmanızı öneririm. C'nin ayrımları olduğu gibi çizmesi talihsiz bir durum, ama onlar oldukları şey.