我正在做兩個涉及atoi的操作,我在想如何使用無符號整數來做到這一點,因爲atoi似乎將它們轉換爲signed,導致環繞整數溢出。我想使用32位無符號整數,但atoi將我有效地限制爲31位無符號整數。atoi無符號整數的等效
if (multiplication_is_safe(atoi(argv[1]),atoi(argv[3])))
{
printf("%s * %s = %u \n", argv[1], argv[3], atoi(argv[1]) * atoi(argv[3]));
return 0;
} else
'atoll'?我不確定它是否是一個標準的C函數。 – mukunda 2014-12-02 22:36:07
如果代碼至少需要16位無符號數,則使用'unsigned'。如果代碼至少需要32位無符號數,則使用'unsigned long'。如果代碼需要精確到32位,則使用'uint32_t'。 – chux 2014-12-03 18:35:37