Возможный дубликат:
Как добиться переполнения целых чисел в MATLAB/Octave?
Я пишу подпрограмму Matlab, которая поможет мне смоделировать то, что я в конечном итоге закодирую на C++. Одна проблема заключается в том, что целые числа Matlab и C++ ведут себя по-разному при выполнении арифметических операций, которые приводят к получению результатов, превышающих размер контейнера.
Например, в Matlab intmax('uint16')
производит 65535
. И intmax('uint16')+1
по-прежнему производит 65535
. Если вы хотите подняться выше 65535, вы не можете. Matlab просто надевает на него шапку.
С++ отличается. Запись unsigned short x = 65535; cout << ++x;
дает 0
, потому что сложение выполняется полностью и просто сохраняются 16 младших значащих битов.
Есть ли способ заставить Matlab вести себя так же?